c# - 是否可以通过 WMI 获取 Cluster -> Availability Group Instance Node Map?

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

我希望枚举 SQL Server Always On 可用性组中的所有实例。

有一个Dynamic Management View在提供此功能的 SQL Server 中,但您需要连接到相关实例才能查询此 View 。

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

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

谢谢

最佳答案

不确定这是否有帮助,但您可以使用 SMO 类(class)获得它吗?

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

关于c# - 是否可以通过 WMI 获取 Cluster -> Availability Group Instance Node Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785536/

相关文章:

delphi - 通过 Delphi 中的 Windows API 使用 COM 端口号获取设备名称

powershell - PowerShell返回类型

c# - 用于获取 2 个不同枚举的排列的最佳集合类型是什么

c# - 在哪里可以找到 C# 的反锐化蒙版?

sql - 在 SQL Server 中用 2 个表的键替换数据

sql - 为什么来自 Red Gate SQL Test 的第一个 tSQLt 样本测试在我的系统上失败了?

WMI 查询 - CPU LoadPercentage

c# - IEnumerable<T> 等于 ICollection<T> 类型检查

c# - ASP.NET核心: Parse complex struct from URL

php - 如何在 PHP 中使用 Microsoft SQL 驱动程序选择 SCOPE_IDENTITY()?