sys.dm_hadr_availability_replica_states (Transact-SQL)

适用于SQL Server

为每个本地副本都返回一行,并为与本地副本位于同一 AlwaysOn 可用性组的每个远程副本都返回一行。 每一行都包含给定副本的状态信息。

重要

若要获取有关给定可用性组中每个副本的信息,请查询 托管主副本的服务器实例上的sys.dm_hadr_availability_replica_states 。 在对正在承载某一可用性组的辅助副本的服务器实例进行查询时,此动态管理视图仅返回该可用性组的本地信息。

列名称 数据类型 描述
replica_id uniqueidentifier 副本的唯一标识符。
group_id uniqueidentifier 可用性组的唯一标识符。
is_local bit 副本是否为本地副本,其中之一:

0 = 指示某一可用性组中其主副本由本地服务器实例承载的远程辅助副本。 此值仅在主副本位置上出现。

1 = 指示本地副本。 在辅助副本上,这是副本所属的可用性组的唯一可用值。
role tinyint 本地副本或连接的远程副本的当前 AlwaysOn 可用性组角色,其中一个:

0 = 正在解析

1 = 主

2 = 辅助

有关 Always On 可用性组角色的信息,请参阅 Always On 可用性组概述 (SQL Server)
role_desc nvarchar(60) 角色说明,其中一项:

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:正在进行中。 至少有一个联接的数据库状态不是 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 反映所有联接的可用性数据库(也称为副本)和副本(同步提交或异步提交模式)的数据库同步状态(synchronization_state)汇总。 汇总将反映副本上的数据库最不正常的累积状态。 下面是可能的值及其说明。

0:不健康。 至少有一个联接的数据库处于 NOT SYNCHRONIZING 状态。

1:部分健康。 一些副本未处于目标同步状态:同步提交副本应已同步,异步提交副本应正在同步。

2:健康。 所有副本均处于目标同步状态:同步提交副本已同步,异步提交副本正在同步。
synchronization_health_desc nvarchar(60) synchronization_health的说明,其中一项:

NOT_HEALTHY

PARTIALLY_HEALTHY

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 错误的日期和时间时间戳。

角色和操作状态

角色、 角色反映给定可用性副本的状态和操作状态 ,operational_state描述副本是否准备好处理所有可用性副本数据库的客户端请求。 下面是每个角色可能的操作状态的摘要:RESOLVING、PRIMARY 和 SECONDARY。

解析: 当可用性副本位于 RESOLVING 角色中时,可能的操作状态如下表所示。

操作状态 说明
PENDING_FAILOVER 正在为可用性组处理故障转移命令。
OFFLINE 可用性副本的所有配置数据都已在 WSFC 群集上更新,并且也在本地元数据中更新,但可用性组目前缺少主副本。
失败 在试图从 WSFC 群集中检索信息时发生了读取失败。
FAILED_NO_QUORUM 本地 WSFC 节点没有仲裁。 这是一种推断状态。

PRIMARY: 当可用性副本正在执行 PRIMARY 角色时,它当前是主副本。 可能的操作状态如下表所示。

操作状态 说明
PENDING 这是一个临时状态,但是,如果工作线程无法处理请求,主副本可能会处于此状态。
ONLINE 可用性组资源已处于联机状态,并且所有数据库工作线程均已选取。
失败 可用性副本无法从 WSFC 群集读取和/或写入。

SECONDARY: 当可用性副本正在执行 SECONDARY 角色时,它当前为辅助副本。 可能的操作状态如下表所示。

操作状态 说明
ONLINE 本地辅助副本连接到主副本。
失败 本地辅助副本无法从 WSFC 群集读取和/或写入。
Null 在主副本上,当行与某一辅助副本相关时,将返回该值。

权限

要求具有服务器的 VIEW SERVER STATE 权限。

SQL Server 2022 及更高版本的权限

要求对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。

另请参阅

AlwaysOn 可用性组概述 (SQL Server)
监视可用性组 (Transact-SQL)