検索
連載

SQL Databaseのデータベースコピーに関する情報を出力するSQL Server動的管理ビューレファレンス(35)

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、SQL Databaseのデータベースコピーに関する情報の出力について解説します。

Share
Tweet
LINE
Hatena

SQL Server動的管理ビュー一覧

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。今回は動的管理ビュー「sys.dm_database_copies」における、SQL Databaseのデータベースコピーに関する情報の出力について解説します。

概要

 「Azure SQL Database」では、「geo」レプリケーションを構成することで、同じデータセンターまたは異なる地域のデータセンターのSQL Databaseサーバ上に、読み取り可能なセカンダリーデータベースを作成できます。「geo」レプリケーションは、データセンターで地域災害または大規模な機能停止が発生した場合のディザスタリカバリーなどの用途に使用できます。

 「geo」レプリケーションでは、セカンダリーデータベースが作成された後、シード処理によってプライマリーデータベースのデータがセカンダリーデータベースにコピーされます。シード処理が完了するとセカンダリーデータベースは使用可能となり、プライマリーデータベースの更新がセカンダリーデータベースに非同期で自動的にレプリケートされるようになります。

 「sys.dm_database_copies」動的管理ビューを使用することで、プライマリーデータベースとセカンダリーデータベース間のデータコピーに関する情報を確認できます。

出力内容

列名 データ型 説明
database_id int データベースID
start_date datetimeoffset 接続先SQL Databaseのデータセンターにおいて、データベースコピーが開始された時刻(UTC)
modify_date datetimeoffset データベースコピーが完了した時刻(UTC)、またはpercent_completeフィールドの更新を反映した時刻(UTC)
1分ごとに更新される
percent_complete real コピーされたバイトの割合(%)
error_code int コピー中に発生したエラーを示すコード
エラーが発生していない場合は0
error_desc nvarchar(4096) コピー中に発生したエラーの説明
error_severity int データベースコピーが失敗した場合は16
error_state int コピーが失敗した場合は1
copy_guid uniqueidentifier コピー操作の一意のID
partner_server sysname コピー先のSQL Databaseサーバの名前
partner_database sysname コピー先のSQL Databaseの名前
replication_state tinyint このデータベースのレプリケーションの状態
 0 = 保留中
 1 = シード処理中
replication_state_desc nvarchar(256) replication_stateの説明
 ・PENDING
 ・SEEDING
maximum_lag int 予約フィールド
is_continuous_copy bit 0を返す
is_target_role bit 0 = ソースデータベース
1 = データベースのコピー
is_interlink_connected bit 予約フィールド
is_offline_secondary bit 予約フィールド

動作例

 Azure SQL Databaseで「geo」レプリケーションを構成し、構成直後に「master」データベースに接続し「sys.dm_database_copies」動的管理ビューを出力します(図1、図2、図3)。

図1
図1 同一リージョンに「geo」レプリケーションを構成したところ
図2
図2  SQL Server Management Studioで、SQL Databaseの「master」データベースに接続した
図3
図3 「sys.dm_database_copies」動的管理ビューでコピーの進捗(しんちょく)状況が出力された

 「sys.dm_database_copies」動的管理ビューは、「master」データベースに接続して出力する必要があります。セカンダリーデータベースのシード処理中に「sys.dm_database_copies」動的管理ビューを出力すると、「start_date」列の値からコピーの開始時刻、「percent_complete」列の値からコピーの進捗(しんちょく)状況などの情報を確認できます。

 データベース名は表示されず、「database_id」列にデータベースIDがあり、対応するデータベースは「sys.databases」システムビューで確認できます(図4)。

図4
図4 「database_id」に対応したデータベースを「sys.databases」システムビューで確認したところ

 シード処理が完了し、セカンダリーデータベースが読み取り可能になった後に、もう一度「sys.dm_database_copies」動的管理ビューを出力すると、データコピーが終了したため、「percent_complete」列の値が「100」になりました(図5、図6)。

図5
図5 シード処理が完了し、セカンダリーが読み取り可能データベースとして使用可能になった
図6
図6 「percent_complete」列の値が「100」となり、シード処理が完了したことが分かる

※本Tipsは、「Azure SQL Database(V12)」での動作を想定して解説しています。

筆者紹介

椎名 武史(しいな たけし)

日本ユニシス株式会社所属。Microsoft MVP for Data Platform(2017〜)。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。

伊東 敏章(いとう としあき)

日本ユニシス株式会社所属。入社以来SQL Server一筋で評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。社内のプログラミングコンテストで4回の優勝経験も持つ。趣味は輪行で週末は自転車を持っての旅行。目標は色々な日本百選を制覇すること。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る