Tentando criar um painel único para todos os nossos servidores quanto ao estado e integridade do grupo de disponibilidade. Quero fazer isso escrevendo um aplicativo e chamando instruções t-sql para coletar dados de cada uma das tabelas/visualizações mestres do servidor e exibi-las como um painel combinado.
Estou usando as visualizações do sistema, mas estou enfrentando o seguinte problema:
A execução select * from sys.dm_hadr_database_replica_states
a partir da réplica Primária exibe os estados das réplicas Primária e Secundária de cada banco de dados, mas a execução a partir da réplica Secundária exibe apenas os resultados da réplica Secundária.
Por exemplo, quando executado no Primário, recebo:
TAPSLog ONLINE FULL SRVR-01-HA TAPSLog_LN Secondary SYNCHRONIZED HEALTHY NULL NULL
TAPSLog ONLINE FULL SRVR-01 TAPSLog_LN Primary SYNCHRONIZED HEALTHY ONLINE NULL
E do Secundário:
TAPSLog ONLINE FULL SRVR-01-HA TAPSLog_LN Secondary SYNCHRONIZED HEALTHY NULL NULL
Alguém sabe se é possível ler o status de todas as réplicas de todas as réplicas e estou usando apenas as tabelas erradas?
Isso é esperado e como funciona. Isso se deve ao protocolo que os grupos de disponibilidade utilizam, o primário conhece todos e seu status atual e o secundário só conhece ele mesmo.
As mensagens de status são essencialmente enviadas apenas do secundário para o primário, além disso, o secundário só se conecta ao primário e o secundário é responsável por isso, é diferente do que a maioria das pessoas está acostumada e normalmente os detalhes de implementação não são grande coisa .
Se você quiser um único painel de vidro, primeiro precisará fazer um inventário das réplicas e AGs. Observe que isso é agravado por grupos de disponibilidade distribuídos e, até certo ponto, por grupos de disponibilidade em escala de leitura. Isso significa que você precisará usar vários catálogos e DMVs, como aqueles com
cluster
nomes, e verificar cada réplica individual, o que pode ser difícil com base no tipo de AG.