搭建完alwayson后,登录辅助副本服务器,查看alwayson可用性副本列表,看到主副本前面显示了一个问号,这里借用网上一张图片做展示:
在显示问号的主副本上右键属性查看,“角色”一栏中,显示的是“未知”,也正是这个原因导致前面有个问号。
在显示面板里面查看alwasyon工作状态一切正常。最后查看网上一些解释,还有通过profiler抓SSMS执行语句,可以判定,这个是正常现象。
使用SSMS连接辅助副本,开启profiler,监听辅助副本上执行的SQL,然后在可用性副本列表下面的主副本节点上右键属性,弹出属性对话框。查看抓的SQL语句,语句太多,这里就不放了。分析语句,看到“角色”对应的是sys.dm_hadr_availability_replica_states中的role字段。而在MSDN中对sys.dm_hadr_availability_replica_states的MSDN有段解释:
意思就是在主副本所在实例上查询这个视图,可以看到所有的副本信息;如果在辅助副本所在的实例上查询,就只能看到自己实例上的副本的信息。
在辅助副本上执行:
select replica_id,role from sys.dm_hadr_availability_replica_states
结果只有一条:
而在主副本所在实例上执行,有2条记录(因为只有一个辅助副本):
role是1代表主副本,role是2代表辅助副本。
所以,SSMS连接到辅助副本实例上,就查询不到主副本的角色,也就显示“未知”,然后在图标上显示个问号,但不代表Alwayson状态不正常。
这个问题在SQL Server 2012上微软就知道了,而且据它说已经修正了:Cumulative update package 1 for SQL Server 2012
不知道是没修复完整,还是后来版本又重现了,还是和这个压根就是两个不同的问题。