sys.dm_hadr_availability_replica_states (Transact-SQL)
適用対象: 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 可用性グループの概要 (SQL Server)」を参照してください。 |
role_desc | nvarchar(60) | role の説明。次のいずれかです。 RESOLVING PRIMARY SECONDARY |
operational_state | tinyint | レプリカの現在の操作状態。次のいずれかです。 0 = フェールオーバーの保留中 1 = 保留中 2 = オンライン 3 = オフライン 4 = 失敗 5 = 失敗、クォーラムなし NULL = レプリカがローカルでない 詳細については、このトピックの「 ロールと運用状態」を参照してください。 |
operational_state_desc | nvarchar(60) | operational_stateの説明。次のいずれかです。 PENDING_FAILOVER PENDING ONLINE OFFLINE 失敗 FAILED_NO_QUORUM NULL |
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_PROGRESS ONLINE NULL |
synchronization_health | tinyint | 参加しているすべての可用性データベース (replicas とも呼ばれます) とレプリカの可用性モード (同期コミットまたは非同期コミット モード) のデータベース同期状態 (synchronization_state) のロールアップを反映します。 ロールアップには、レプリカ上のデータベースの最も正常な累積状態が反映されます。 使用可能な値とその説明を次に示します。 0 : 正常ではありません。 少なくとも 1 つの結合されたデータベースが NOT SYNCHRONIZING 状態です。 1: 部分的に正常です。 一部のレプリカが目標の同期状態ではありません: 同期コミット レプリカは SYNCHRONIZED である必要があり、非同期コミット レプリカは SYNCHRONIZING である必要があります。 2 : 正常。 すべてのレプリカがターゲット同期状態です。同期コミット レプリカは同期され、非同期コミット レプリカは同期されます。 |
synchronization_health_desc | nvarchar(60) | synchronization_healthの説明。次のいずれかです。 NOT_HEALTHY PARTIALLY_HEALTHY 正常 |
connected_state | tinyint | セカンダリ レプリカが現在プライマリ レプリカに接続されているかどうか。 使用可能な値とその説明を次に示します。 0 : 切断されています。 可用性レプリカの DISCONNECTED 状態への応答は、そのロールによって異なります。プライマリ レプリカでは、セカンダリ レプリカが切断されると、セカンダリ データベースはプライマリ レプリカで NOT SYNCHRONIZED としてマークされ、セカンダリが再接続されるまで待機します。セカンダリ レプリカでは、切断されていることを検出すると、セカンダリ レプリカはプライマリ レプリカへの再接続を試みます。 1: 接続済み。 各プライマリ レプリカでは、同じ可用性グループに含まれるすべてのセカンダリ レプリカの接続状態を追跡します。 セカンダリ レプリカでは、プライマリ レプリカの接続状態のみを追跡します。 |
connected_state_desc | nvarchar(60) | connection_stateの説明。次のいずれかです。 DISCONNECTED CONNECTED |
last_connect_error_number | int | 最後の接続エラーの番号。 |
last_connect_error_description | nvarchar(1024) | last_connect_error_number メッセージのテキスト。 |
last_connect_error_timestamp | datetime | last_connect_error_number エラーが発生した日時のタイムスタンプ。 |
ロールと運用状態
ロール role は、特定の可用性レプリカの状態と運用状態 ( operational_state) を反映し、レプリカが可用性レプリカのすべてのデータベースに対するクライアント要求を処理する準備ができているかどうかを示します。 各ロールで可能な操作状態の概要を次に示します:RESOLVING、PRIMARY、SECONDARY。
RESOLVING: 可用性レプリカが RESOLVING ロールにある場合、考えられる操作状態は次の表のようになります。
動作状態 | 説明 |
---|---|
PENDING_FAILOVER | 可用性グループに対するフェールオーバー コマンドを処理しています。 |
OFFLINE | WSFC クラスターおよびローカル メタデータ内の可用性レプリカのすべての構成データが更新されたが、可用性グループには現在プライマリ レプリカがありません。 |
失敗 | WSFC クラスターから情報を取得しようとしたときに、読み取りエラーが発生しました。 |
FAILED_NO_QUORUM | ローカルの WSFC ノードに、クォーラムがありません。 これは推論された状態です。 |
PRIMARY: 可用性レプリカが PRIMARY ロールを実行している場合、現在はプライマリ レプリカです。 考えられる動作状態を次の表に示します。
動作状態 | 説明 |
---|---|
PENDING | これは一時的な状態ですが、ワーカーを使用して要求を処理できない場合、プライマリ レプリカがこの状態になることがあります。 |
ONLINE | 可用性グループ リソースはオンラインであり、すべてのデータベース ワーカー スレッドが取得されています。 |
失敗 | 可用性レプリカは、WSFC クラスターに対して読み取りまたは書き込みを行うことができません。 |
SECONDARY: 可用性レプリカがセカンダリ ロールを実行している場合、現在はセカンダリ レプリカです。 考えられる動作状態は、次の表に示すとおりです。
動作状態 | 説明 |
---|---|
ONLINE | ローカル セカンダリ レプリカがプライマリ レプリカに接続されています。 |
失敗 | ローカル セカンダリ レプリカが WSFC クラスターに対して読み取りまたは書き込みを行うことができません。 |
NULL | プライマリ レプリカでは、行がセカンダリ レプリカに関係する場合に、この値が返されます。 |
アクセス許可
サーバーに対する VIEW SERVER STATE 権限が必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。