Eu tenho um grupo de disponibilidade de várias sub-redes do SQL Server 2016 de dois nós. Estou tentando configurar a replicação transnacional do AG para uma instância autônoma para relatórios, que também atua como um distribuidor remoto. Precisamos apenas de um pequeno subconjunto das tabelas, portanto, adicionar a instância autônoma como uma terceira réplica não é uma opção.
Eu segui o Guia da Microsoft para configurar isso. Já rodei o EXEC sys.sp_redirect_publisher
e quando executo EXEC sys.sp_validate_replica_hosts_as_publishers
ele retorna o listener AG. Mas quando fazemos failover do AG, a replicação para de funcionar com o seguinte relatório de erros no monitor de replicação
Mensagens de erro: Não é possível consultar o servidor redirecionado 'AGL' para o editor original 'PUB1' e o banco de dados do editor 'AlwaysOnTest' para determinar o nome do servidor remoto; Erro 7303, mensagem de erro 'Erro 7303, nível 16, estado 1, mensagem: não é possível inicializar o objeto de fonte de dados do provedor OLE DB "SQLNCLI11" para o servidor vinculado "[B66E8E27-E422-41DB-BBBC-254D450468D7]".'. (Fonte: MSSQL_REPL, número do erro: MSSQL_REPL21879) Obtenha ajuda: http://help/MSSQL_REPL21879 Erros foram registrados ao validar o editor redirecionado. (Fonte: MSSQL_REPL, número do erro: MSSQL_REPL22037) Obtenha ajuda: http://help/MSSQL_REPL22037
Algumas coisas que eu verifiquei e tentei
- Os servidores vinculados verificados para o assinante existem em todos os hosts de réplica secundários.
- Alterou o modo de segurança para autenticação SQL usando sp_changedistpublisher com base nisso.
Quando o AG sofre failover, se eu executar novamente no distribuidor EXEC sys.sp_validate_replica_hosts_as_publishers
, ele retorna
Não é possível consultar sys.availability_replicas no grupo de disponibilidade primário associado ao nome de rede virtual 'AGL' para os nomes de servidor das réplicas de membros: erro = 7303, mensagem de erro = erro 7303, nível 16, estado 1, mensagem: não é possível inicializar os dados objeto de origem do provedor OLE DB "SQLNCLI11" para o servidor vinculado "[7A7DA613-BFDA-4C51-B62C-9C7CD94E769E]"..',
Estou preso o que tentar a seguir .... ajuda por favor!!!
ATUALIZAÇÃO 16/06/2020
Quando o AG sofre failover, tentei conectar-me ao ouvinte AG do distribuidor remoto. O SSMS conectou bem, mas quando tentei me conectar com o SQLCMD, ele retornou um erro. Também posso me conectar à instância de failover diretamente do distribuidor, ignorando o ouvinte.
Sqlcmd: Erro: Microsoft ODBC Driver 13 for SQL Server: Named Pipes Provider: Não foi possível abrir uma conexão com o SQL Server 2 . . Sqlcmd: Erro: Microsoft ODBC Driver 13 for SQL Server: Tempo limite de logon expirado. Sqlcmd: Erro: Microsoft ODBC Driver 13 for SQL Server: Ocorreu um erro relacionado à rede ou específico da instância ao estabelecer uma conexão com o SQL Server. Servidor não encontrado ou não acessível. Verifique se o nome da instância está correto e se o SQL Server está configurado para permitir conexões remotas. Para obter mais informações, consulte os Manuais Online do SQL Server..
A causa raiz disso foi o tempo limite de conexão porque o grupo de disponibilidade estava em um grupo de disponibilidade de várias sub-redes. Isso foi resolvido seguindo este documento da Microsoft.