我正在尝试查找需要运行哪些查询(或多个查询)以确定可用性组是否存在任何类型的问题。我一直在使用:
SELECT @@SERVERNAME AS 'primary_replica', cs.database_name, rs.synchronization_health_desc
FROM sys.dm_hadr_database_replica_states rs
join sys.dm_hadr_database_replica_cluster_states cs on rs.replica_id =
cs.replica_id and rs.group_database_id = cs.group_database_id
WHERE rs.is_local = 1
事实证明,同步健康 ( select * from sys.dm_hadr_availability_group_states
) 可以是 NOT_HEALTHY,但上面的查询没有显示副本有任何问题。我已经尝试查看所有包含信息的各种 DM,但它是一个迷宫或单词,我无法找到通往某处必须存在的 SQL 奶酪的方法。
表明存在需要解决的问题的查询是什么?我不需要它具体或指定原因,我只需要知道有问题。我知道在故障转移期间,一些状态将是 NOT_HEALTHY,我们通过在发送警报之前要求 x 分钟的不健康来解决这个问题。
以下是一个 SQL 查询,可以针对集群中的所有节点运行以检查所有 AG 相关的健康状态。根据您的需要,输出的格式可能会有所不同,但这个输出要么返回不健康对象的列表,要么返回包含服务器名称且所有对象都健康的行。