Antecedentes :
Estamos tentando criar um equipamento de teste "básico" da AG para uma de nossas equipes de suporte. Não sabendo quais servidores, em um determinado momento, serão os principais instruídos para executar o TSQL em um grupo de servidores registrado. O grupo de servidores registrados consiste em todos os servidores no AG. O objetivo é executar apenas o TSQL no servidor principal atual:
Arnês de teste atual :
IF EXISTS (SELECT *
FROM sys.dm_hadr_availability_replica_states AS HARS
INNER JOIN sys.dm_hadr_availability_replica_cluster_states AS HACS ON HACS.replica_id = HARS.replica_id
WHERE (HARS.role_desc = 'PRIMARY') AND (HACS.replica_server_name LIKE @@SERVERNAME))
BEGIN
<<SOME CODE TO EXECUTE>>
END
Problema :
Se o primeiro servidor que responder à consulta de vários servidores não retornar nenhum resultado, o SSMS assumirá que o conjunto de resultados correto não é um conjunto de resultados, mesmo que outros servidores posteriormente retornem com um conjunto de resultados. Portanto, nesse cenário, nenhum resultado é retornado ... isso não está correto e não é a funcionalidade esperada.
Alguém pode pensar em uma maneira, com o SSMS (essa é a ferramenta mais familiar para a equipe de CS), forçar a execução apenas no servidor principal atual?