Espero que todos possam me ajudar no que parece ser um problema muito simples, mas para o qual estou lutando para encontrar uma solução.
Estamos executando o SQL Server Standard 2016 e utilizamos grupos de disponibilidade entre os 2 nós. Estando no padrão, posso ter apenas 1 banco de dados por grupo de disponibilidade.
Uma vez por mês, precisamos corrigir nosso servidor, e é uma dor absoluta fazer o failover manualmente de cada grupo e depois voltar para corrigir. Minha solução é que eu tenho um terceiro servidor, que tem os nós 1 e 2 como servidores vinculados e isso me ajuda a gerenciar os 50 grupos de disponibilidade ímpares, bem como algumas outras coisas relacionadas a aplicativos que fazemos.
Eu tenho uma conexão com os 2 nós e, como trabalho, coleto e atualizo uma tabela no servidor 3 com cada banco de dados, nome do grupo de disponibilidade, nome do nó etc. para os 2 nós principais. isso é executado a cada 5 minutos e me alerta sobre problemas.
Minha etapa final é agora ter um procedimento armazenado no servidor 3, que simplesmente me permitirá fazer failover dos grupos de disponibilidade ou apenas um único ect. Funciona perfeitamente, exceto em um nó e no outro, recebo este erro:
As operações DDL do grupo de disponibilidade são permitidas somente quando você está usando o banco de dados mestre. Execute o comando USE MASTER e tente novamente o comando DDL do grupo de disponibilidade.
Meu código para este comando é o seguinte:
SET @Query = 'EXEC (''ALTER AVAILABILITY GROUP [' + @CurrentAG + '] FAILOVER'') AT [' + @FailoverServer + '];'
EXEC sp_executesql @Query
O que termina com este comando:
EXEC ('ALTER AVAILABILITY GROUP [MyAvailGroup] FAILOVER') AT [DestinationLinkedServerNode];
Obrigado por qualquer ajuda sobre isso.
Para responder à sua pergunta, deve ser como abaixo, desde que você esteja executando abaixo na réplica primária.
Uma solução melhor seria usar dbatools para iniciar o failover
Invoke-DbaAgFailover
. Dessa forma, você não precisa usar nenhum servidor extra ou servidor vinculado. Será uma solução muito flexível também.