A réplica de disponibilidade está desconectada em um Grupo de Disponibilidade AlwaysOn
Aplica-se a: SQL Server
Introdução
- Nome da Política: estado de conexão da réplica de disponibilidade
- Problema: a réplica de disponibilidade está desconectada
- Categoria: crítica
- Faceta: réplica de disponibilidade
Descrição
Esta política verifica o estado da conexão entre as réplicas de disponibilidade. O estado da política é não íntegro quando o estado de conexão da réplica de disponibilidade é DISCONNECTED
. Caso contrário, a política estará em um estado íntegro.
Possíveis causas:
A réplica secundária não está conectada à réplica primária. O estado de conectado é DISCONNECTED
. Esse problema pode ser causado por um dos seguintes motivos:
- A porta de conexão pode estar em conflito com outro aplicativo.
- O tipo ou algoritmo de criptografia são incompatíveis.
- O ponto de extremidade de conexão foi excluído ou não foi iniciado.
- Há problemas de rede/conectividade ou portas bloqueadas no firewall.
- A conta de serviço/inicialização não é um usuário de domínio e não pode se conectar ao DC e à porta e ao nó remoto (por exemplo, 5022).
Soluções possíveis
Verifique a configuração de ponto de extremidade de espelhamento de banco de dados para as instâncias da réplica primária e secundária e atualize a configuração incompatível. Além disso, verifique se a porta está em conflito e, em caso afirmativo, altere o número da porta.
Estas são as possíveis soluções para este problema:
A porta de conexão pode estar em conflito com outro aplicativo
Execute os seguintes comandos para diagnosticar o problema da porta:
$server_name = "server_instance" #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT type_desc, port FROM sys.tcp_endpoints WHERE type_desc = 'DATABASE_MIRRORING'; "
O comando anterior retorna o número da porta que você precisa usar no comando a seguir.
$port = "5022"
Get-NetTCPConnection -LocalPort $port
Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess | Select-Object Name, ProductVersion, Path, Id
O tipo ou algoritmo de criptografia são incompatíveis
Execute este comando em ambos os servidores, compare a criptografia e verifique se ambos são iguais.
$server_name = "server_instance" #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT name, state_desc, encryption_algorithm_desc, protocol_desc, type_desc FROM sys.database_mirroring_endpoints"
O ponto de extremidade de conexão foi excluído ou não foi iniciado
Execute o comando a seguir se o ponto de extremidade de espelhamento sair e for iniciado.
$server_name = "server_instance" #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT name, state_desc, encryption_algorithm_desc, protocol_desc, type_desc FROM sys.database_mirroring_endpoints"
Execute o comando a seguir se suspeitar que o ponto de extremidade não está respondendo a conexões ou não está em execução.
$server_name = "server_instance" #use your SQL Server instance here
$server_name = "hadr_endpoint" #replace with your endpoint name
sqlcmd -S $server_name -E -Q "ALTER ENDPOINT hadr_endpoint STATE = stopped"
sqlcmd -S $server_name -E -Q "ALTER ENDPOINT hadr_endpoint STATE = started"
Aviso
Executar o comando com STATE = stopped
vai parar o ponto de extremidade e interromper temporariamente o fluxo de tráfego do Always On.
Há problemas de rede/conectividade ou portas estão bloqueadas no firewall
Use os seguintes comandos para testar a conectividade em ambas as direções, de Node1
para Node2
e Node2
para Node1
:
$computer = "remote_node" # replace with node name in your environment
$port = "5022" # replace with the port from your database_mirroring_endpoints
Test-NetConnection -ComputerName $computer -Port $port
A conta não é um usuário de domínio e não pode se conectar ao DC e ao nó remoto
Para testar se a conta de serviço pode se conectar ao nó remoto, siga estas etapas. As etapas pressupõem que você não esteja conectado com a conta de serviço.
Selecione Iniciar>Windows PowerShell> e clique com o botão direito do mouse no ícone.
Selecione Mais>Executar como outro usuário>Usar outra conta.
Digite o nome e a senha da conta de serviço.
Depois que o Windows PowerShell for aberto, digite o seguinte comando para verificar se você iniciou sessão com a conta de serviço:
whoami
Em seguida, você pode testar a conexão com o nó remoto, conforme mostrado no exemplo a seguir.
$computer = "remote_node" # replace with node name in your environment $port = "5022" # replace with the port from your database_mirroring_endpoints Test-NetConnection -ComputerName $computer -Port $port