Fala pessoal,
Nesse post vou explicar como resolver um problema no carregamento das informações do Replication Monitor.
Error: Replication monitor could not connect to distributor:
Em primeiro lugar, vamos explicar o cenário:
O cliente possui uma Replicação Transacional em um servidor. Ao conectar diretamente nesse servidor, conseguimos exibir normalmente as informações do Replication Monitor, conforme a imagem abaixo:
Contudo, ao tentar conectar de outra máquina, ou seja, uma máquina externa ao servidor, através do SSMS (SQL Server Management Studio) recebemos o erro abaixo:
Erro – Português: “O Replication Monitor não pode recuperar as informações do Publicador com o Distribuidor”
Erro – Inglês: “Replication monitor could not connect to distributor”
O cliente então utilizou o Wireshark para monitorar o tráfego de rede para encontrar o que estava sendo enviado antes de acontecer o erro.
Com isso, ele conseguiu identificar a execução da procedure “sp_helpdistpublisher”, onde ‘XXX.XXX.XXX.XXX’ era o IP que ele estava utilizando para se conectar na instância de forma externa ao servidor.
1 |
exec sp_helpdistpublisher N'XXX.XXX.XXX.XXX' |
Ao tentar executar a procedure manualmente passando o IP do servidor recebemos o erro abaixo:
Msg 14080, Level 11, State 1, Procedure sp_helpdistpublisher, Line 141 [Batch Start Line 0]
The remote server “XXX.XXX.XXX.XXX” does not exist, or has not been designated as a valid Publisher, or you may not have permission to see available Publishers.
Foi então que ele incluiu um registro no arquivo “hosts” na pasta do Windows para fazer um mapeamento do IP com o NOME DO SERVIDOR.
ATENÇÃO: Essa alteração deve ser feita na máquina externa e não no servidor OK.
Caminho: “C:\Windows\System32\drivers\etc\hosts”
DICA: Na dúvida, faça sempre uma cópia de segurança antes de alterar o arquivo, pois pode ser que suas alterações afetem outras coisas. Outra dica é: caso você não consiga editar o arquivo diretamente nessa pasta, copie ele para outro local, faça as modificações e depois sobrescreva o arquivo na pasta original.
A alteração foi apenas incluir a linha abaixo informando o IP e nome do servidor.
XXX.XXX.XXX.XXX NOME-SERVIDOR
Agora, para conectar no servidor através da máquina externa, basta utilizar o SSMS e informar o NOME ao invés do IP e dessa forma o Replication Monitor irá funcionar corretamente, pois agora o arquivo hosts faz esse mapeamento pra você =).
Além disso, se executarmos a procedure abaixo informando o NOME ao invés do IP ela executa normalmente e retorna as informações!
1 |
exec sp_helpdistpublisher N'NOME-SERVIDOR' |
Por fim, para que você possa validar as informações do Replication Monitor, você deve possuir alguma das permissões abaixo:
- A função de servidor fixa “sysadmin”.
Esses usuários podem monitorar a replicação e possuem controle total sobre a modificação de propriedades de replicação como cronogramas de agentes, perfis de agentes, etc…
- A função de banco de dados “replmonitor” no banco de dados distribution.
Esses usuários podem monitorar a replicação, mas não podem modificar nenhuma propriedade da replicação.
Resumo:
Portanto, se você for utilizar uma máquina externa ao servidor e quiser validar o Replication Monitor, você deve incluir um registro no arquivo “hosts” e conectar no SSMS utilizando o NOME ao invés do IP do servidor.
Espero que tenha gostado e que isso também possa ser útil no seu dia a dia. Até o próximo post!
Me siga no LinkedIn e YouTube para ficar por dentro das novidades.
Abraço,
Luiz Vitor França Lima
Consultor SQL Server