sys.dm_hadr_database_replica_states (Transact-SQL)
SQL Server のローカル インスタンスが可用性レプリカをホストしている AlwaysOn 可用性グループに参加しているデータベースごとに 1 行のデータを返します。 この動的管理ビューは、プライマリ レプリカとセカンダリ レプリカの両方の状態情報を公開します。 セカンダリ レプリカの場合、このビューはサーバー インスタンス上のセカンダリ データベースごとに 1 行のデータを返します。 プライマリ レプリカの場合、このビューはプライマリ データベースごとに 1 行のデータと、対応するセカンダリ データベースについての追加の行のデータを返します。
重要 |
---|
アクションおよび上位レベルの状態によっては、データベースの状態情報が使用できないか、最新でない場合があります。 また、値はローカルに関連しているものに限られます。 たとえば、プライマリ レプリカの場合、last_hardened_lsn 列の値には、セカンダリ レプリカの実際に書き込まれた現在の LSN 値ではなく、プライマリ レプリカで現在使用できる特定のセカンダリ データベースに関する情報が反映されます。 |
列名 |
データ型 |
説明 (プライマリ レプリカの場合) |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
database_id |
int |
SQL Server のインスタンス内で一意な、データベースの識別子。 これは sys.databases カタログ ビューで表示される値と同じです。 |
||||||||||||||||
group_id |
uniqueidentifier |
データベースが属する可用性グループの識別子。 |
||||||||||||||||
replica_id |
uniqueidentifier |
可用性グループ内の可用性レプリカの識別子。 |
||||||||||||||||
group_database_id |
uniqueidentifier |
可用性グループ内のデータベースの識別子。 この識別子は、このデータベースが参加しているすべてのレプリカで同じです。 |
||||||||||||||||
is_local |
bit |
可用性データベースがローカルであるかどうか。次のいずれかになります。 0 = データベースは SQL Server インスタンスに対してローカルではありません。 1 = データベースはサーバー インスタンスに対してローカルです。 |
||||||||||||||||
synchronization_state |
tinyint |
データ移動の状態。次のいずれかになります。
|
||||||||||||||||
synchronization_state_desc |
nvarchar(60) |
データ移動の状態の説明。次のいずれかになります。 NOT SYNCHRONIZING SYNCHRONIZING SYNCHRONIZED REVERTING INITIALIZING |
||||||||||||||||
is_commit_participant |
bit |
0 = このデータベース レプリカに対してトランザクションのコミットが同期されていません。 1 = このデータベース レプリカに対してトランザクションのコミットが同期されています。 非同期コミットの可用性レプリカにあるデータベースの場合、この値は常に 0 になります。 同期コミットの可用性レプリカにあるデータベースの場合、この値はプライマリ データベースでのみ正確です。 |
||||||||||||||||
synchronization_health |
tinyint |
可用性レプリカの可用性グループに参加しているデータベースの同期状態と可用性レプリカの可用性モード (同期コミット モードまたは非同期コミット モード) の交差部分を反映します。
|
||||||||||||||||
synchronization_health_desc |
nvarchar(60) |
可用性データベースの synchronization_health の説明。 NOT_HEALTHY PARTIALLY_HEALTHY HEALTHY |
||||||||||||||||
database_state |
tinyint |
0 = オンライン 1 = 復元 2 = 復旧 3 = 復旧保留 4 = 問題あり 5 = 緊急 6 = オフライン
|
||||||||||||||||
database_state_desc |
nvarchar(60) |
可用性レプリカの database_state の説明。 ONLINE RESTORING RECOVERING RECOVERY_PENDING SUSPECT EMERGENCY OFFLINE
|
||||||||||||||||
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 には、0 が埋め込まれたログ ブロック ID が反映されます。 これは実際のログ シーケンス番号 (LSN) ではありません。 この値がどのように派生するかについては、この後の「LSN 列の値について」を参照してください。 |
||||||||||||||||
truncation_lsn |
numeric(25,0) |
プライマリ レプリカの場合、プライマリ データベースで、対応するすべてのセカンダリ データベースを対象とする最小のログ切り捨て LSN が反映されます。 ローカル ログの切り捨てが (バックアップ操作などにより) ブロックされている場合、この LSN はローカル切り捨て LSN を超える可能性があります。 特定のセカンダリ データベースでは、対象となるデータベースの切り捨てポイントが反映されます。 truncation_lsn には、0 が埋め込まれたログ ブロック ID が反映されます。 これは実際のログ シーケンス番号ではありません。 |
||||||||||||||||
last_sent_lsn |
numeric(25,0) |
プライマリによって送信されたすべてのログ ブロックの最後のポイントを示すログ ブロック ID。 これは、最後に送信されたログ ブロックの ID ではなく、次に送信されるログ ブロックの ID です。 last_sent_lsn には、0 が埋め込まれたログ ブロック ID が反映されます。これは実際のログ シーケンス番号ではありません。 |
||||||||||||||||
last_sent_time |
datetime |
ログ ブロックが最後に送信された時刻。 |
||||||||||||||||
last_received_lsn |
numeric(25,0) |
このセカンダリ データベースをホストするセカンダリ レプリカによって受信されたすべてのログ ブロックの最後のポイントを示すログ ブロック ID。 last_received_lsn には、0 が埋め込まれたログ ブロック ID が反映されます。 これは実際のログ シーケンス番号ではありません。 |
||||||||||||||||
last_received_time |
datetime |
最後に受信したメッセージのログ ブロック ID がセカンダリ レプリカで読み取られた時刻。 |
||||||||||||||||
last_hardened_lsn |
numeric(25,0) |
セカンダリ データベースで最後に書き込まれた LSN のログ レコードを含むログ ブロックの先頭。 現在のポリシーが "遅延" の非同期コミット プライマリ データベースまたは同期コミット データベースでは、値は NULL です。 その他の同期コミット プライマリ データベースの場合、last_hardened_lsn は、すべてのセカンダリ データベースを対象に書き込まれた LSN の最小値を示します。
|
||||||||||||||||
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/秒)。 |
||||||||||||||||
filestream_send_rate |
bigint |
FILESTREAM ファイルがセカンダリ レプリカに配布される速度 (KB/秒)。 |
||||||||||||||||
end_of_log_lsn |
numeric(25,0) |
ローカルのログ LSN の末尾。 プライマリ データベースおよびセカンダリ データベースのログ キャッシュ内の最後のログ レコードに対応する実際の LSN。 プライマリ レプリカの場合、セカンダリ行には、セカンダリ レプリカがプライマリ レプリカに送信した最新の進捗状況メッセージからのログ LSN の末尾が反映されます。 rend_of_log_lsn には、0 が埋め込まれたログ ブロック ID が反映されます。 これは実際のログ シーケンス番号ではありません。 詳細については、この後の「LSN 列の値について」を参照してください。 |
||||||||||||||||
last_commit_lsn |
Numeric(25,0) |
トランザクション ログの最終コミット レコードに対応する実際のログ シーケンス番号。 プライマリ データベースの場合、これは処理された最終コミット レコードに対応します。 セカンダリ データベースの行には、セカンダリ レプリカがプライマリ レプリカに送信したログ シーケンス番号が反映されます。 セカンダリ レプリカの場合、これは再実行された最終コミット レコードです。 |
||||||||||||||||
last_commit_time |
datetime |
最終コミット レコードに対応する時刻。 セカンダリ データベースの場合、この時刻はプライマリ データベースと同じになります。 プライマリ レプリカの場合、各セカンダリ データベースの行に、そのセカンダリ データベースをホストするセカンダリ レプリカがプライマリ レプリカに報告した時刻が表示されます。 プライマリ データベースの行と特定のセカンダリ データベースの行の時刻の違いは、再実行プロセスの遅延が解消され、進行状況がセカンダリ レプリカからプライマリ レプリカに報告されることを想定した、おおよその目標復旧時間 (RPO) を表しています。 |
||||||||||||||||
low_water_mark_for_ghosts |
bigint |
プライマリ データベースでの非実体クリーンアップで使用される低レベルのウォーター マークを示すデータベースの単調に増加する数値。 この数値が時間の経過と共に増加しない場合は、非実体クリーンアップが行われない可能性があることを意味します。 プライマリ レプリカでは、クリーンアップする非実体行を決定するために、すべての可用性レプリカ (プライマリ レプリカを含む) でこのデータベースのこの列の最小値を使用します。 |
LSN 列の値について
end_of_log_lsn、last_hardened_lsn、last_received_lsn、last_sent_lsn、recovery_lsn、および truncation_lsn の各列の値は、実際のログ シーケンス番号 (LSN) ではありません。 これらの各値には、0 が埋め込まれたログ ブロック ID が反映されます。
end_of_log_lsn、last_hardened_lsn、および recovery_lsn は、フラッシュ LSN です。 たとえば、last_hardened_lsn は既にディスク上にあるブロックの次のブロックの先頭を示します。 そのため、last_hardened_lsn の値を下回る LNS はすべてディスク上に存在します。 この値以上の LSN はフラッシュされません。
sys.dm_hadr_database_replica_states によって返される LSN 値の中で last_redone_lsn だけが実際の LSN です。
セキュリティ
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。