Можно ли получить Cluster -> Availability Group Instance Node Map через WMI?

Я хочу перечислить все экземпляры в группе доступности Always On SQL Server.

В SQL Sever есть Динамическое представление управления, которое обеспечивает это, но вы необходимо подключиться к соответствующему экземпляру, чтобы запросить это представление.

Кроме того, я вижу в реестре для узла в кластере, что есть сопоставление, которое я хочу получить: HKLM\Cluster\Resources\{cluster_guid}\SqlInstToNodeMap

Существует класс WMI, который может перечислять все группы доступности в кластере, но я не могу понять, как (даже изучив объект PrivateProperties) я могу перечислить карту SQL Instance to Cluster Node через WMI — кто-нибудь знает, возможно ли это, или может предоставить механизм, который не требуется просмотр реестра или запрос SQL Server?

Спасибо


person Kram    schedule 03.08.2015    source источник


Ответы (1)


Не уверен, что это поможет, но вы могли бы получить это, используя классы SMO?

Server srv = new Server("instance_name")

Вы можете получить доступ к свойству AvailabilityRepliks каждая группа доступности в коллекции 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)
  }
}
person Jamie Pollard    schedule 03.08.2015
comment
Привет, спасибо за ответ. Хотя это полезно, это не то, что мне нужно, поскольку я не хочу напрямую запрашивать SQL Server, а скорее получать список экземпляров из ресурса AG кластера через какой-то API. - person Kram; 03.08.2015