AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 252853
Accepted
Leonardo Lacerda
Leonardo Lacerda
Asked: 2019-11-09 10:32:04 +0800 CST2019-11-09 10:32:04 +0800 CST 2019-11-09 10:32:04 +0800 CST

Espelho de banco de dados - Host não pode ser alcançado ou não existe

  • 772

Tentei espelhar banco de dados com GUI e T-SQL, mas tive problemas em ambos os casos.

Aqui estão algumas informações sobre infraestrutura e SSMS:

A INFRAESTRUTURA

  • Servidor principal com SQL Server 2017 Enterprise Edition
  • Servidor espelho com SQL Server 2017 Enterprise Edition
  • Servidor testemunha com SQL Server 2017 Express Edition
  • Todos os servidores SO: Windows Server 2016 Standard
  • Todos os servidores com firewall desabilitado
  • Todos os servidores em domínio comum
  • Todos os servidores têm os mesmos usuários e privilégios
  • Telnet funciona perfeitamente com a porta 5022 em todos os servidores
  • Criei usuário para gerenciar serviço em todos os servidores com GRANT CONNECT ON ENDPOINT::Mirroring

Informações do SQL Server Management Studio - SSMS:

Microsoft SQL Server Management Studio                      14.0.17289.0
Microsoft Analysis Services Client Tools                    14.0.1016.283
Microsoft Data Access Components (MDAC)                     10.0.14393.0
Microsoft MSXML                                             3.0 6.0 
Microsoft Internet Explorer                                 9.11.14393.0
Microsoft .NET Framework                                    4.0.30319.42000
Operating System                                            6.3.14393

Vou explicar os dois casos de erro, com GUI e T-SQL.

Com GUI:

Terminais de configuração bem-sucedidos em todos os servidores

insira a descrição da imagem aqui

Mas eu tive esse erro quando tentei iniciar o espelhamento

insira a descrição da imagem aqui

É tão confuso porque o banco de dados deve estar em status de recuperação no servidor espelho. Mas li alguns posts sobre isso e é recomendado configurar com T-SQL, então

COM T-SQL:

Com o T-SQL eu tive esse problema:

Msg 1418, Level 16, State 1, Line 54 O endereço de rede do servidor "TCP://HML-SQLS-01-TST.domain.br:5022" não pode ser alcançado ou não existe. Verifique o nome do endereço de rede e se as portas para os terminais locais e remotos estão operacionais.

Deixe-me explicar passo a passo que eu tinha seguido:

SERVIDOR PRINCIPAL

CREATE DATABASE mirror
GO

ALTER DATABASE mirror
SET RECOVERY FULL
GO

USE mirror
GO

CREATE TABLE TESTE(
    id INT IDENTITY(1,1),
    descricao VARCHAR(255)
);

BACKUP DATABASE mirror
TO DISK = 'F:\Backup\mirror-full.bak'
GO

BACKUP LOG mirror
TO DISK = 'F:\Backup\mirror-log.bak'
GO


CREATE ENDPOINT Mirroring
    STATE = started
    AS TCP (listener_port=5022)
    FOR database_mirroring (role=partner)
GO

USE MASTER
GO
CREATE LOGIN [DOMAIN\svc.witness] FROM WINDOWS
GO
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\svc.witness];
GO

SERVIDOR ESPELHO

CREATE ENDPOINT Mirroring
    STATE = started
    AS TCP (listener_port=5022)
    FOR database_mirroring (role=partner)
GO

RESTORE DATABASE mirror
FROM DISK = 'F:\Backup\mirror-full.bak'
WITH NORECOVERY
GO

RESTORE DATABASE mirror
FROM DISK = 'F:\Backup\mirror-log.bak'
WITH NORECOVERY
GO

USE MASTER
GO
CREATE LOGIN [DOMAIN\svc.witness] FROM WINDOWS
GO
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\svc.witness];
GO

SERVIDOR TESTEMUNHA

create endpoint Mirroring
state = started
    as tcp (listener_port=5022)
    for database_mirroring (role=WITNESS)
go

USE MASTER
GO
CREATE LOGIN [DOMAIN\svc.witness] FROM WINDOWS
GO
GRANT CONNECT ON ENDPOINT::Mirroring TO [DOMAIN\svc.witness];
GO

SERVIDOR ESPELHO

alter database mirror
set partner = 'TCP://HML-SQLS-01.domain.br:5022'
GO

PRINCIPAL SERVER (O erro aparece nesta execução)

--The error pops in this execution:
alter database mirror
set partner = 'TCP://HML-SQLS-01-TST.domain.br:5022'
GO

Msg 1418, Level 16, State 1, Line 54 O endereço de rede do servidor "TCP://HML-SQLS-01-TST.domain.br:5022" não pode ser alcançado ou não existe. Verifique o nome do endereço de rede e se as portas para os terminais locais e remotos estão operacionais.

Mas se eu tentar este comando no CMD, funcionará perfeitamente:

telnet hml-sqls-01-tst.domain.br 5022

ENDPOINTS EM SERVIDORES:

Ponto de extremidade do servidor principal insira a descrição da imagem aqui

Endpoint do servidor espelhado insira a descrição da imagem aqui

Ponto de extremidade do servidor testemunha insira a descrição da imagem aqui

Alguém já passou por isso ou poderia sugerir um caminho a seguir?

sql-server t-sql
  • 3 3 respostas
  • 1931 Views

3 respostas

  • Voted
  1. Shekar Kola
    2019-11-10T00:03:44+08:002019-11-10T00:03:44+08:00

    Relacionado à pergunta, mas não à resposta: Embora você tenha o SQL Server 2017 com Enterprise Edition , por que considerar um recurso que está em manutenção e pode ser removido no futuro.

    No entanto, no seu caso, sugiro verificar as seguintes áreas (se ainda não o tiver feito), espero que isso resolva o problema:

    • Certifique-se de que todos os serviços de instância do SQL sejam executados na mesma conta de domínio
      • Esse serviço obteve permissões (como mencionado no OP) em todas as instâncias do SQL
    • Verifique se as portas do endpoint são diferentes, se um servidor tiver várias instâncias SQL
      • Permitir portas de ponto final no firewall (entrada e saída), mesmo firewall desativado
    • Reinicie todos os serviços de instância do SQL se não tiver feito isso desde a última alteração de senha
      • Verifique o log de erros do SQL para verificar se os mesmos números de porta estão escutando
    • 1
  2. Best Answer
    Leonardo Lacerda
    2019-11-12T06:09:11+08:002019-11-12T06:09:11+08:00

    Eu verifiquei o LOG através de Management>SQL Server Logs>Current e mostrou que o serviço tentou se conectar no endpoint com o usuário padrão da instância do SQL Server (no meu caso [DOMAIN\svc.ssms])

    Falha na tentativa de login do Espelhamento de Banco de Dados com erro: Falha no handshake de conexão. O login 'DOMAIN\svc.ssms' não tem permissão CONNECT no endpoint. Estado 84.

    Então, eu concedo permissão de endpoint de conexão a este usuário e funciona bem.

    Siga os comandos usados ​​em todos os servidores:

    USE master
    GO
    CREATE LOGIN [DOMAIN\svc.ssms] FROM WINDOWS;
    GO
    GRANT CONNECT ON ENDPOINT::Mirroring to [DOMAIN\svc.ssms];
    GO 
    

    Estou incomodado em não usar o usuário [DOMAIN\witness] na tentativa de conexão, mesmo concedendo a permissão de conexão ao endpoint. Não é uma solução mais elegante, mas resolve meu caso. No entanto, pode haver melhores práticas ou métodos. Se você sabe, peço que comente abaixo.

    Grato a todos!

    • 1
  3. rvsc48
    2019-11-09T13:03:44+08:002019-11-09T13:03:44+08:00

    Não sei por que, mas tente executar o comando Alter database no Secondary, primeiro, usando 5022 como o número da porta. Em seguida, execute o comando Alter database no Primary, em seguida, usando 5023 como o número da porta. Deixe-me saber se você continuar recebendo o mesmo erro.

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve