sys.dm_database_replica_states (Azure SQL Database)
適用対象: Azure SQL データベース Azure SQL Managed Instance
プライマリ レプリカとセカンダリ レプリカに参加している各データベースの状態情報を返します。 セカンダリ レプリカでは、インスタンス上のセカンダリ データベースごとに 1 行を返します。 プライマリ レプリカで、プライマリ データベースに対して 1 つの行と、各セカンダリ データベースの追加行を返します。
重要
アクションと上位レベルの状態によっては、データベースの状態情報が使用できないか、古くなっている可能性があります。 また、値はローカルに関連しているものに限られます。
列名 | データ型 | 説明 (プライマリ レプリカ上) |
---|---|---|
database_id | int | データベースの識別子。 Azure SQL Database では、値は 1 つのデータベースまたは Elastic Pool 内で一意ですが、論理サーバー内では一意ではありません。 |
group_id | uniqueidentifier | データベースが属する可用性グループの識別子。 |
replica_id | uniqueidentifier | 可用性グループ内の可用性レプリカの識別子。 |
group_database_id | uniqueidentifier | 可用性グループ内のデータベースの識別子。 この識別子は、このデータベースが参加しているすべてのレプリカで同じです。 |
is_local | bit | 可用性データベースがローカルであるかどうか。次のいずれかになります。 0 = データベースは SQL Server インスタンスに対してローカルではありません。 1 = データベースはサーバー インスタンスに対してローカルです。 |
is_primary_replica | bit | レプリカがプライマリの場合は 1 を返し、データベースが属する可用性グループのセカンダリ レプリカの場合は 0 を返します。 これは、分散型可用性グループまたはアクティブ geo レプリケーション関係のプライマリ データベースまたはセカンダリ データベースを参照しません。 適用対象: SQL Server 2014 (12.x) 以降のバージョン。 |
synchronization_state | tinyint | データ移動状態。次のいずれかの値。 0 = 同期していません。 プライマリ データベースの場合、データベースが対応するセカンダリ データベースとトランザクション ログを同期する準備ができていないことを示します。 セカンダリ データベースの場合は、接続の問題が原因でデータベースがログ同期を開始していない、中断中、または起動時またはロールの切り替え中に遷移状態が発生していることを示します。 1 = 同期中。 プライマリ データベースの場合、データベースがセカンダリ データベースからのスキャン要求を受け入れる準備ができていることを示します。 セカンダリ データベースについては、そのデータベースのアクティブなデータ移動が行われていることを示します。 2 = 同期済み。 プライマリ データベースでは、"SYNCHRONIZING" の代わりに、"SYNCHRONIZED" と表示されます。 同期コミットのセカンダリ データベースでは、データベース レプリカでフェールオーバーの準備ができていることをローカル キャッシュが示している場合、およびデータベース レプリカが同期中である場合、"同期済み" と表示されます。 3 = 元に戻す。 セカンダリ データベースがプライマリ データベースからページをアクティブに取得している場合の元に戻すプロセスのフェーズを示します。 重要: セカンダリ レプリカ上のデータベースが REVERTING 状態の場合、セカンダリ レプリカへのフェールオーバーを強制すると、データベースはプライマリ データベースとして起動できない状態になります。 データベースをセカンダリ データベースとして再接続する必要があるか、ログ バックアップから新しいログ レコードを適用する必要があります。 4 = 初期化中。 セカンダリ データベースが元に戻す LSN からの遅れを取り戻すために必要なトランザクション ログがセカンダリ レプリカに配布され、書き込まれている場合の元に戻すフェーズを示します。 重要: セカンダリ レプリカ上のデータベースが INITIALIZING 状態の場合、セカンダリ レプリカへのフェールオーバーを強制すると、データベースはプライマリ データベースとして起動できない状態になります。 データベースをセカンダリ データベースとして再接続する必要があるか、ログ バックアップから新しいログ レコードを適用する必要があります。 |
synchronization_state_desc | nvarchar(60) | データ移動の状態の説明。次のいずれかになります。 - 同期中ではない -同期 -シンクロナイズド -戻す -初期化 |
is_commit_participant | bit | 0 = トランザクション コミットは、このデータベースに対して同期されません。 1 = このデータベース レプリカに対してトランザクションのコミットが同期されています。 非同期コミットの可用性レプリカにあるデータベースの場合、この値は常に 0 になります。 同期コミット可用性レプリカ上のデータベースの場合、この値はプライマリ データベースでのみ正確です。 |
synchronization_health | tinyint | 可用性レプリカ上の可用性グループに参加しているデータベースの同期状態と、可用性レプリカの可用性モード (同期コミットモードまたは非同期コミット モード) の積集合を反映します。これは、次のいずれかの値です。 0 = 正常ではありません。 データベースの synchronization_state は 0 (NOT SYNCHRONIZING) です。1 = 部分的に正常です。 同期コミット可用性レプリカ上のデータベースは、 synchronization_state が 1 (SYNCHRONIZING) の場合、部分的に正常であると見なされます。2 = 正常。 同期コミット可用性レプリカ上のデータベースは、 synchronization_state が 2 (SYNCHRONIZED) の場合は正常と見なされ、非同期コミット可用性レプリカ上のデータベースは、 synchronization_state が 1 (SYNCHRONIZING) の場合は正常と見なされます。 |
synchronization_health_desc | nvarchar(60) | 可用性データベースの synchronization_health の説明。- NOT_HEALTHY - PARTIALLY_HEALTHY -元気 |
database_state | tinyint | 0 = オンライン 1 = 復元 2 = 回復 3 = 復旧保留 4 = 問題あり 5 = 緊急 6 = オフライン 注: sys.databases のstate 列と同じです。 |
database_state_desc | nvarchar(60) | 可用性レプリカの database_state の説明。-オンライン -復元 -回復 - RECOVERY_PENDING -容疑者 -緊急 -オフライン 注: sys.databases のstate_desc 列と同じです。 |
is_suspended | bit | データベースの状態。次のいずれかになります。 0 = 再開 1 = 中断 |
suspend_reason | tinyint | データベースが中断されている場合、中断状態の理由は次のいずれかです。 0 = ユーザー アクション 1 = パートナーからの中断 2 = やり直し 3 = キャプチャ 4 = 適用 5 = 再起動 6 = 元に戻す 7 = 再検証 8 = セカンダリ レプリカの同期ポイントの計算エラー |
suspend_reason_desc | nvarchar(60) | データベース中断状態の理由の説明。次のいずれかです。 SUSPEND_FROM_USER: ユーザーが手動でデータ移動を中断しました SUSPEND_FROM_PARTNER = 強制フェールオーバー後にデータベース レプリカが中断される SUSPEND_FROM_REDO: 再実行フェーズ中にエラー発生しました SUSPEND_FROM_APPLY = ログをファイルに書き込むときにエラーが発生しました (エラー ログを参照) SUSPEND_FROM_CAPTURE: プライマリ レプリカのログをキャプチャ中にエラーが発生しました SUSPEND_FROM_RESTART: データベースを再起動する前にデータベース レプリカが中断されました (エラー ログを参照してください) SUSPEND_FROM_UNDO: 元に戻すフェーズ中にエラー発生しました (エラー ログを参照してください) SUSPEND_FROM_REVALIDATION = 再接続時にログ変更の不一致が検出されました (エラー ログを参照) SUSPEND_FROM_XRF_UPDATE: 共通のログ ポイントが見つかりません (エラー ログを参照してください) |
recovery_lsn | numeric(25,0) | プライマリ レプリカの場合、復旧後またはフェールオーバー後、プライマリ データベースが新しいログ レコードを書き込む前のトランザクション ログの末尾。 特定のセカンダリ データベースの場合、この値が現在のセキュリティで強化された LSN (last_hardened_lsn ) より小さい場合、 recovery_lsn は、このセカンダリ データベースを再同期する必要がある (つまり、元に戻して再初期化する) 必要がある値です。 この値が現在の強化された LSN 以上の場合、再同期は不要であり、発生しません。recovery_lsn は、ゼロで埋め込まれたログ ブロック ID を反映します。 実際のログ シーケンス番号 (LSN) ではありません。 |
truncation_lsn | numeric(25,0) | プライマリ レプリカでは、プライマリ データベースに対して、対応するすべてのセカンダリ データベースの最小ログ切り捨て LSN が反映されます。 ローカル ログの切り捨てが (バックアップ操作などにより) ブロックされている場合、この LSN はローカル切り捨て LSN を超える可能性があります。 特定のセカンダリ データベースでは、対象となるデータベースの切り捨てポイントが反映されます。 truncation_lsn は、ゼロで埋め込まれたログ ブロック ID を反映します。 実際のログ シーケンス番号ではありません。 |
last_sent_lsn | numeric(25,0) | すべてのログ ブロックがプライマリによって送信されたポイントを示すログ ブロック識別子。 これは、最後に送信されたログ ブロックの ID ではなく、次に送信されるログ ブロックの ID です。last_sent_lsn は、ゼロで埋め込まれたログ ブロック ID を反映します。 実際のログ シーケンス番号ではありません。 |
last_sent_time | datetime | 最後のログ ブロックが送信された時刻。 |
last_received_lsn | numeric(25,0) | このセカンダリ データベースをホストするセカンダリ レプリカによってすべてのログ ブロックが受信されたポイントを識別するログ ブロック ID。last_received_lsn は、ゼロで埋め込まれたログ ブロック ID を反映します。 実際のログ シーケンス番号ではありません。 |
last_received_time | datetime | 最後に受信したメッセージのログ ブロック ID がセカンダリ レプリカで読み取られた時刻。 |
last_hardened_lsn | numeric(25,0) | セカンダリ データベースで最後に強化された LSN のログ レコードを含むログ ブロックの先頭。 非同期コミット プライマリ データベース、または現在のポリシーが "delay" である同期コミット データベースでは、値は NULL です。 その他の同期コミット プライマリ データベースの場合、 last_hardened_lsn はすべてのセカンダリ データベースで強化された LSN の最小値を示します。注: last_hardened_lsn は、ゼロで埋め込まれたログ ブロック ID を反映します。 実際のログ シーケンス番号ではありません。 |
last_hardened_time | datetime | セカンダリ データベースで、最後に強化された LSN (last_hardened_lsn ) のログ ブロック識別子の時刻。 プライマリ データベースの場合、書き込まれた LSN の最小値に対応する時刻が反映されます。 |
last_redone_lsn | numeric(25,0) | セカンダリ データベースで再実行された最後のログ レコードの実際のログ シーケンス番号。 last_redone_lsn は常に last_hardened_lsn 未満です。 |
last_redone_time | datetime | セカンダリ データベースでログ レコードが最後に再実行された時刻。 |
log_send_queue_size | bigint | セカンダリ データベースに送信されていないプライマリ データベースのログ レコードの量 (KB 単位)。 |
log_send_rate | bigint | プライマリ レプリカ インスタンスが最後のアクティブ期間中にデータを送信した平均レート (KB/秒)。 |
redo_queue_size | bigint | まだ再実行されていないセカンダリ レプリカのログ ファイル内のログ レコードの量 (KB 単位)。 |
redo_rate | bigint | 特定のセカンダリ データベースでログ レコードが再実行される平均レート (KB/秒)。redo_rate は、データベース エンジンの起動以降に再実行されたログ バイトの合計を、再実行がアクティブに実行されていた時間範囲で割ることによって計算されます(経過時間ではなく)。 再実行が継続的に実行されない可能性があるため、結果の値は、パフォーマンス カウンターの値とは異なる (高い) Database Replica:Redone Bytes/sec 可能性があります。 |
filestream_send_rate | bigint | FILESTREAM ファイルがセカンダリ レプリカに配布される速度 (KB/秒)。 |
end_of_log_lsn | numeric(25,0) | ログ LSN のローカル末尾。 プライマリ データベースとセカンダリ データベースのログ キャッシュ内の最後のログ レコードに対応する実際の LSN。 プライマリ レプリカの場合、セカンダリ行には、セカンダリ レプリカがプライマリ レプリカに送信した最新の進捗状況メッセージからのログ LSN の末尾が反映されます。end_of_log_lsn は、ゼロで埋め込まれたログ ブロック ID を反映します。 実際のログ シーケンス番号ではありません。 |
last_commit_lsn | numeric(25,0) | トランザクション ログの最終コミット レコードに対応する実際のログ シーケンス番号。 プライマリ データベースの場合、これは処理された最終コミット レコードに対応します。 セカンダリ データベースの行には、セカンダリ レプリカがプライマリ レプリカに送信したログ シーケンス番号が反映されます。 セカンダリ レプリカの場合、これは再実行された最終コミット レコードです。 |
last_commit_time | datetime | 最終コミット レコードに対応する時刻。 セカンダリ データベースの場合、この時刻はプライマリ データベースと同じになります。 プライマリ レプリカの場合、各セカンダリ データベースの行に、そのセカンダリ データベースをホストするセカンダリ レプリカがプライマリ レプリカに報告した時刻が表示されます。 プライマリ データベース行と特定のセカンダリ データベース行の時間の差は、再実行プロセスがキャッチアップされ、進行状況がセカンダリ レプリカによってプライマリ レプリカに報告されたと仮定して、目標復旧ポイント (RPO) を表します。 |
low_water_mark_for_ghosts | bigint | プライマリ データベースのゴースト クリーンアップで使用される低ウォーター マークを示す、データベースの単調に増加する数。 この数が時間の経過と同時に増加しない場合は、ゴーストクリーンアップが発生しない可能性があることを意味します。 プライマリ レプリカでは、クリーンアップする非実体行を決定するために、すべての可用性レプリカ (プライマリ レプリカを含む) でこのデータベースのこの列の最小値を使用します。 |
secondary_lag_seconds | bigint | 同期中にセカンダリ レプリカがプライマリ レプリカの背後にある秒数。 適用対象: SQL Server 2016 (13.x) 以降のバージョン。 |
quorum_commit_lsn | numeric(25,0) | 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 |
quorum_commit_time | datetime | 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 |
アクセス許可
データベースに対する VIEW DATABASE STATE 権限が必要です。