Mubashar Iftikhar Asked: 2019-05-09 01:58:41 +0800 CST2019-05-09 01:58:41 +0800 CST 2019-05-09 01:58:41 +0800 CST Always On 可用性问号 772 在我的生产环境中,我有两个数据库服务器,称为DBN1和DBN2。我在两个之间建立了一个集群,DBN1是我的主数据库服务器。现在,我在服务器和数据库上都使用了 Always on 可用性功能进行了同步。 今天我遇到一个问题。DBN1上有一个小问号图标, DBN2始终在可用性属性上显示该图标。此外,它也没有显示它是一个主数据库。为什么会这样? 这是我的主服务器输出并按照箭头 这是我的辅助服务器输出并按照箭头 sql-server-2016 distributed-availability-groups 1 个回答 Voted Best Answer Randi Vertongen 2019-05-09T02:44:42+08:002019-05-09T02:44:42+08:00 辅助副本不知道该副本的角色/DBN1状态 尝试故障转移到辅助节点时,主节点的状态未知: 它找到当前的主副本,但没有找到主副本的状态。 从主服务器进行故障转移时,它确实会找到此信息。 当您选择辅助副本上带有问号的副本的属性时: 特性 角色:未知 而在主副本上,所有角色及其同步状态都是已知的。 sys.dm_hadr_availability_replica_states 执行此查询会在主要副本上返回多行,但仅在次要副本上返回次要行。 select * from sys.dm_hadr_availability_replica_states; 此行为将在故障转移后逆转。 额外检查 当查看在次要副本上打开未知副本的属性时执行的查询时,sys.dm_hadr_availability_replica_statesdmv 也用于left join更大的查询中。 这里一个有趣的部分是OperationalState专栏: ISNULL(arstates.operational_state, 6) AS [OperationalState], 这意味着如果副本不存在于该 dmv 中,例如在辅助节点上执行时,则返回6为OperationalState. 这种状态在 dmv 的文档中没有明确说明: operation_state tinyint 副本的当前运行状态,其中之一: 0 = 挂起的故障转移 1 = 待处理 2 = 在线 3 = 离线 4 = 失败 5 = 失败,没有法定人数 NULL = 副本不是本地的。 有关详细信息,请参阅本主题后面的角色和操作状态。 该'Unkown'状态也未在文档中注明。 在这种情况下6,当角色未知时使用。 6刷新辅助节点上的可用性副本时,它并不总是这样: 使用的查询将未知副本的角色状态设置为 3: ISNULL(arstates.role, 3) AS [Role], 在 dmv 的文档中处于脱机状态。 并且连接状态列将是2 ISNULL(arstates.connected_state, 2) AS [ConnectionState], 文档中也没有提到: 0:断开连接。... 1:已连接。...
辅助副本不知道该副本的角色/
DBN1
状态尝试故障转移到辅助节点时,主节点的状态未知:
它找到当前的主副本,但没有找到主副本的状态。
从主服务器进行故障转移时,它确实会找到此信息。
当您选择辅助副本上带有问号的副本的属性时:
特性
角色:未知
而在主副本上,所有角色及其同步状态都是已知的。
sys.dm_hadr_availability_replica_states
执行此查询会在主要副本上返回多行,但仅在次要副本上返回次要行。
此行为将在故障转移后逆转。
额外检查
当查看在次要副本上打开未知副本的属性时执行的查询时,
sys.dm_hadr_availability_replica_states
dmv 也用于left join
更大的查询中。这里一个有趣的部分是
OperationalState
专栏:这意味着如果副本不存在于该 dmv 中,例如在辅助节点上执行时,则返回
6
为OperationalState
.这种状态在 dmv 的文档中没有明确说明:
该
'Unkown'
状态也未在文档中注明。在这种情况下
6
,当角色未知时使用。6
刷新辅助节点上的可用性副本时,它并不总是这样:使用的查询将未知副本的角色状态设置为 3:
在 dmv 的文档中处于脱机状态。
并且连接状态列将是
2
文档中也没有提到: