Freigeben über


Problema ao estabelecer um Mirror

Recentemente estive em um cliente para configurar o Database Mirroring em uma base de dados. Pedi a ele para fazer um backup da base de dados inicial e restaurar no mirror, para que quando eu chegasse já fizesse o mirror.

Depois de criar os endpoints, ao tentar iniciar o mirror, vinha a mensagem abaixo:

"The server network address "TCP://<FQDN>:5022" can not be reached or does not exist. Check the network address name and that the ports for the local and remote endpoints are operational. (Microsoft SQL Server, Error: 1418)"

image

Na figura acima, estou omitindo o nome do servidor por questões de privacidade. No lugar da faixa em branco viria o FQDN do servidor de um dos endpoints. A porta 5022 é padrão, mas pode ser alterada durante a configuração.

Foram feitos os seguintes testes:

a) Ping no FQDN partindo do servidor A para o servidor B e vice-versa: OK

b) Telnet na porta 5022, partindo também de um lado para o outro: OK

c) Login utilizado tem permissão CONNECT nos endpoints: OK.

Solução: o restore do banco de dados não havia sido feito com a opção "WITH NORECOVERY". Embora a mensagem de erro nos leve a acreditar que o problema ocorre devido a uma falha de rede, esta foi a causa no nosso caso. É obrigatório que o restore da base de dados seja feito com esta opção, mas isto não foi percebido pela pessoa que fez o restore.

Apenas decidi dividir esta experiência aqui pois, pesquisando pela internet, vi pessoas discutindo em forums o mesmo sintoma, sem atingir uma solução.

Comments

  • Anonymous
    August 11, 2008
    Bom dia Pericles. Estou com o mesmo problema que foi postado por você, porém já havia feito o restore na instância do MIRRORDB com a opção NORECOVERY. Saberia dizer o que pode estar errado? ou uma outra fonte para pesquisa? Ambiente do Teste: WinXP SP2, SQL Server Standard Edition SP2. OBS: Estou fazendo o mirroring entre 2 instâncias na mesma máquina, sem o witness. Desde já agradeço:) []´s

  • Anonymous
    August 07, 2009
    Boa tarde Pericles / Marcos, O problema do Marcos parece ser a sintaxe do FQDN com já com a instância, e isso realmente não é possível. tente fazer o seguinte. --  Rodar no Principal Server IF EXISTS (SELECT name FROM sys.database_mirroring_endpoints WHERE name='endpoint_mirroring')  DROP ENDPOINT endpoint_mirroring GO CREATE ENDPOINT endpoint_mirroring    STATE = STARTED    AS TCP ( LISTENER_PORT = 5022 )    FOR DATABASE_MIRRORING (ROLE=PARTNER); GO --Rodar no Mirror Server IF EXISTS (SELECT name FROM sys.database_mirroring_endpoints WHERE name='endpoint_mirroring')  DROP ENDPOINT endpoint_mirroring GO CREATE ENDPOINT endpoint_mirroring    STATE = STARTED    AS TCP ( LISTENER_PORT = 5022 )    FOR DATABASE_MIRRORING (ROLE=PARTNER); GO --Verifique se está funcionando SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints --rode no mirror USE master GO ALTER DATABASE Pubs SET PARTNER = 'TCP://SERVER.dominio:5022' --a instancia não importa nesse momento.. e sim a porta definida no mirror ok? abraços Fernando Forenza

  • Anonymous
    June 14, 2012
    Se você está utilizando um domínio deve iniciar o mirror estando logado com o usuário lacal da máquina ou configurar o agent e a instância para suportar o domínio, mesmo se logando com o usuário SA no sql server