適用対象:SQL Server
ローカル レプリカごとに 1 行のデータと、ローカル レプリカと同じ AlwaysOn 可用性グループに含まれるリモート レプリカごとに 1 行のデータを返します。 各行には、特定のレプリカの状態に関する情報が含まれています。
重要
特定の可用性グループ内のすべてのレプリカに関する情報を取得するには、プライマリ レプリカをホストするサーバー インスタンスで sys.dm_hadr_availability_replica_states クエリを実行します。 可用性グループのセカンダリ レプリカをホストするサーバー インスタンスでこの動的管理ビューに対してクエリを実行すると、可用性グループのローカル情報のみが返されます。
| 列名 | データ型 | ヌラブル | 説明 |
|---|---|---|---|
replica_id |
uniqueidentifier | いいえ | レプリカの一意識別子。 |
group_id |
uniqueidentifier | いいえ | 可用性グループの一意識別子。 |
is_local |
bit | いいえ | レプリカがローカルであるかどうかは、次のいずれかです。0 = プライマリ レプリカがローカル サーバー インスタンスによってホストされている可用性グループ内のリモート セカンダリ レプリカを示します。 この値は、プライマリ レプリカの場所でのみ発生します。1 = ローカル レプリカを示します。 セカンダリ レプリカの場合、これはそのレプリカが属する可用性グループに対して使用できる唯一の値です。 |
role |
tinyint | イエス | ローカル レプリカまたは接続されたリモート レプリカの現在の Always On 可用性グループ ロール。次のいずれかです。0 = 解決中1 = プライマリ2 = セカンダリAlways On 可用性グループロールの詳細については、「Always On 可用性グループとは」を参照してください。 |
role_desc |
nvarchar(60) | イエス |
roleの説明。次のいずれかです。RESOLVINGPRIMARYSECONDARY |
operational_state |
tinyint | イエス | レプリカの現在の操作状態。次のいずれかです。0 = 保留中のフェールオーバー1 = 保留中2 = オンライン3 = オフライン4 = 失敗5 = 失敗、クォーラムなしNULL = レプリカがローカルではありません。詳細については、この記事の後半の 「ロールと運用状態」を参照してください。 |
operational_state_desc |
nvarchar(60) | イエス |
operational_stateの説明。次のいずれかです。PENDING_FAILOVERPENDINGONLINEOFFLINEFAILEDFAILED_NO_QUORUMNULL |
connected_state |
tinyint | イエス | セカンダリ レプリカが現在プライマリ レプリカに接続されているかどうか。 使用可能な値とその説明を次に示します。0 = 切断されています。
DISCONNECTED状態に対する可用性レプリカの応答は、そのロールによって異なります。プライマリ レプリカでは、セカンダリ レプリカが切断されると、セカンダリ データベースはプライマリ レプリカでNOT SYNCHRONIZEDとしてマークされ、セカンダリが再接続するまで待機します。セカンダリ レプリカでは、切断されていることを検出すると、セカンダリ レプリカはプライマリ レプリカへの再接続を試みます。1 = 接続済み。各プライマリ レプリカでは、同じ可用性グループに含まれるすべてのセカンダリ レプリカの接続状態を追跡します。 セカンダリ レプリカでは、プライマリ レプリカの接続状態のみを追跡します。 |
connected_state_desc |
nvarchar(60) | イエス |
connection_stateの説明。次のいずれかです。DISCONNECTEDCONNECTED |
recovery_health |
tinyint | イエス | sys.dm_hadr_database_replica_states動的管理ビューのdatabase_state列のロールアップ。 使用される値とその説明を次に示します。0 = 進行中です。 少なくとも 1 つの結合されたデータベースに、 ONLINE 以外のデータベース状態があります (database_state は 0されていません)。1 = オンライン。 結合されたすべてのデータベースのデータベース状態は ONLINE (database_state は 0)。NULL: is_local = 0 |
recovery_health_desc |
nvarchar(60) | イエス |
recovery_healthの説明。次のいずれかです。ONLINE_IN_PROGRESSONLINENULL |
synchronization_health |
tinyint | イエス | 参加しているすべての可用性データベース (レプリカとも呼ばれます) のデータベース同期状態 (synchronization_state) と レプリカの可用性モード (同期コミットモードまたは非同期コミット モード) のロールアップを反映します。 ロールアップには、レプリカ上のデータベースの最も正常な累積状態が反映されます。 使用可能な値とその説明を次に示します。0 = 正常ではありません。 少なくとも 1 つの結合されたデータベースが NOT SYNCHRONIZING 状態です。1 = 部分的に正常です。 一部のレプリカはターゲット同期状態ではありません。同期コミット レプリカは同期する必要があり、非同期コミット レプリカは同期する必要があります。2 = 正常です。 すべてのレプリカがターゲット同期状態です。同期コミット レプリカは同期され、非同期コミット レプリカは同期されます。 |
synchronization_health_desc |
nvarchar(60) | イエス |
synchronization_healthの説明。次のいずれかです。NOT_HEALTHYPARTIALLY_HEALTHYHEALTHY |
last_connect_error_number |
int | イエス | 最後の接続エラーの番号。 |
last_connect_error_description |
nvarchar(1024) | イエス |
last_connect_error_number メッセージのテキスト。 |
last_connect_error_timestamp |
datetime | イエス |
last_connect_error_number エラーが発生した日時を示すタイムスタンプ。 |
write_lease_remaining_ticks |
bigint | イエス | 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 |
current_configuration_commit_start_time_utc |
datetime | イエス | 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 |
is_internal |
bit | イエス | 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 |
operational_state_desc |
nvarchar(60) | イエス |
operational_stateの説明。次のいずれかです。PENDING_FAILOVERPENDINGONLINEOFFLINEFAILEDFAILED_NO_QUORUMNULL |
recovery_health |
tinyint | イエス | sys.dm_hadr_database_replica_states動的管理ビューのdatabase_state列のロールアップ。 使用される値とその説明を次に示します。0 = 進行中です。 少なくとも 1 つの結合されたデータベースに、 ONLINE 以外のデータベース状態があります (database_state は 0されていません)。1 = オンライン。 結合されたすべてのデータベースのデータベース状態は ONLINE (database_state は 0)。NULL: is_local ではない 0 |
synchronization_health |
tinyint | いいえ | 参加しているすべての可用性データベース (レプリカとも呼ばれます) のデータベース同期状態 (synchronization_state) と レプリカの可用性モード (同期コミットモードまたは非同期コミット モード) のロールアップを反映します。 ロールアップには、レプリカ上のデータベースの最も正常な累積状態が反映されます。 指定できる値とその説明は次のとおりです。0 = 正常ではありません。 少なくとも 1 つの結合されたデータベースが NOT SYNCHRONIZING 状態です。1 = 部分的に正常です。 一部のレプリカはターゲット同期状態ではありません。同期コミット レプリカは同期する必要があり、非同期コミット レプリカは同期する必要があります。2 = 正常です。 すべてのレプリカがターゲット同期状態です。同期コミット レプリカは同期され、非同期コミット レプリカは同期されます。 |
ロールと運用状態
ロール roleは、特定の可用性レプリカの状態を反映します。 運用状態 operational_state、レプリカが可用性レプリカのすべてのデータベースに対するクライアント要求を処理する準備ができているかどうかを示します。 次の表は、各ロールで可能な操作状態 ( RESOLVING、 PRIMARY、 SECONDARY) をまとめたものです。
RESOLVING: 可用性レプリカが RESOLVING ロールにある場合、考えられる動作状態は次の表のようになります。
| 操作状態 | 説明 |
|---|---|
PENDING_FAILOVER |
システムは可用性グループのフェールオーバー コマンドを処理しています。 |
OFFLINE |
可用性レプリカのすべての構成データは WSFC クラスターで更新されます。また、ローカル メタデータでも更新されますが、可用性グループには現在プライマリ レプリカがありません。 |
FAILED |
WSFC クラスターから情報を取得しようとしたときに、読み取りエラーが発生しました。 |
FAILED_NO_QUORUM |
ローカル WSFC ノードにクォーラムがありません。 この状態が推論されます。 |
PRIMARY: 可用性レプリカが PRIMARY ロールを実行する場合、現在はプライマリ レプリカです。 考えられる動作状態を次の表に示します。
| 操作状態 | 説明 |
|---|---|
PENDING |
この状態は一時的なものですが、ワーカーが要求を処理できない場合は、プライマリ レプリカがこの状態でスタックする可能性があります。 |
ONLINE |
可用性グループ リソースはオンラインであり、すべてのデータベース ワーカー スレッドが取得されています。 |
FAILED |
可用性レプリカは、WSFC クラスターとの間で読み取りまたは書き込みを行うことはできません。 |
SECONDARY: 可用性レプリカが SECONDARY ロールを実行する場合、現在はセカンダリ レプリカです。 考えられる動作状態は、次の表に示すとおりです。
| 操作状態 | 説明 |
|---|---|
ONLINE |
ローカル セカンダリ レプリカがプライマリ レプリカに接続されています。 |
FAILED |
ローカル セカンダリ レプリカは、WSFC クラスターとの間で読み取りまたは書き込みを行うことはできません。 |
NULL |
プライマリ レプリカでは、行がセカンダリ レプリカに関係する場合に、この値が返されます。 |
アクセス許可
SQL Server 2019 (15.x) 以前のバージョンでは、サーバーに対する VIEW SERVER STATE アクセス許可が必要です。
SQL Server 2022 (16.x) 以降のバージョンでは、サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。