是否有可能获得群集 - >可用性组实例通过WMI实现节点映射?

时间:2015-08-03 11:00:26

标签: c# sql-server wmi wmi-query failovercluster

我希望枚举SQL Server Always On Availability Group中的所有实例。

SQL Sever中有Dynamic Management View提供此功能,但您需要连接到相关实例才能查询此视图。

另外,我可以在注册表中看到群集上的节点有我希望获得的映射:HKLM\Cluster\Resources\{cluster_guid}\SqlInstToNodeMap

有一个WMI class可以枚举集群上的所有可用性组,但是我看不出如何(甚至通过检查PrivateProperties对象)我可以通过WMI枚举SQL实例到集群节点映射 - 有没有人知道如果可行,或者可以提供一种不需要查看注册表或查询SQL Server的机制?

由于

1 个答案:

答案 0 :(得分:1)

不确定这是否有帮助但您可以使用SMO类获取它?

Server srv = new Server("instance_name")

您可以访问AvailabilityReplics集合中每个AvailabilityGroupAvailabilityGroups属性来获取副本节点,例如(未经测试)

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)
  }
}