我希望枚举SQL Server Always On Availability Group中的所有实例。
SQL Sever中有Dynamic Management View提供此功能,但您需要连接到相关实例才能查询此视图。
另外,我可以在注册表中看到群集上的节点有我希望获得的映射:HKLM\Cluster\Resources\{cluster_guid}\SqlInstToNodeMap
有一个WMI class可以枚举集群上的所有可用性组,但是我看不出如何(甚至通过检查PrivateProperties对象)我可以通过WMI枚举SQL实例到集群节点映射 - 有没有人知道如果可行,或者可以提供一种不需要查看注册表或查询SQL Server的机制?
由于
答案 0 :(得分:1)
不确定这是否有帮助但您可以使用SMO类获取它?
Server srv = new Server("instance_name")
您可以访问AvailabilityReplics集合中每个AvailabilityGroup的AvailabilityGroups属性来获取副本节点,例如(未经测试)
Server srv = new Server("instance_name")
foreach(AvialbilityGroup grp in srv.AvailabilityGroups)
{
Console.WriteLine("Found group {0} on instance {1}", grp.Name, srv.InstanceName);
Console.WriteLine(" Replicas:");
foreach(AvailabilityReplica replica in grp.AvailabilityReplicas)
{
Console.WriteLine(" Replica Name: {0}, Cluster Name: {1}", replica.Name, repica.Parent.Parent.ClusterName)
}
}