La replica di disponibilità è disconnessa in un gruppo di disponibilità Always On
Si applica a: SQL Server
Introduzione
- Nome del criterio: Stato di connessione della replica di disponibilità
- Problema: La replica di disponibilità è disconnessa.
- Categoria: Critico
- Facet: Replica di disponibilità
Descrizione
Tramite questi criteri è possibile controllare lo stato di connessione tra le repliche di disponibilità. I criteri sono in uno stato non integro quando lo stato di connessione della replica di disponibilità è DISCONNECTED
. Altrimenti, sono in uno stato integro.
Possibili cause
La replica secondaria non è connessa alla replica primaria. Lo stato di connessione è DISCONNECTED
. Questo problema può essere causato da uno dei motivi seguenti:
- La porta di connessione potrebbe essere in conflitto con un'altra applicazione.
- Il tipo o l'algoritmo di crittografia non corrispondono.
- L'endpoint di connessione è stato eliminato o non è stato avviato.
- Sono presenti problemi di rete/connettività o porte bloccate a livello di firewall.
- L'account di avvio/servizio non è un utente di dominio e non riesce a connettersi al controller di dominio e al nodo e alla porta remota (ad esempio, la 5022).
Possibili soluzioni
Verificare la configurazione dell'endpoint del mirroring di database per le istanze della replica primaria e secondaria e aggiornare la configurazione non corrispondente. Controllare anche se la porta è in conflitto, e in tal caso, cambiare il numero di porta.
Di seguito sono riportate le possibili soluzioni a questo problema:
La porta di connessione potrebbe essere in conflitto con un'altra applicazione
Eseguire i comandi seguenti per diagnosticare i problemi relativo alla 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'; "
Il comando precedente restituisce il numero di porta che è necessario usare nel comando seguente.
$port = "5022"
Get-NetTCPConnection -LocalPort $port
Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess | Select-Object Name, ProductVersion, Path, Id
Il tipo o l'algoritmo di crittografia non corrispondono
Eseguire questo comando in entrambi i server e confrontare la crittografia per assicurarsi che sia uguale in entrambi.
$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"
L'endpoint di connessione è stato eliminato o non è stato avviato
Eseguire il comando seguente se l'endpoint di mirroring termina e viene avviato.
$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"
Eseguire il comando seguente se si sospetta che l'endpoint non risponda alle connessioni o non sia in esecuzione.
$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"
Avviso
L'esecuzione del comando con STATE = stopped
arresterà l'endpoint e interromperà temporaneamente il flusso di traffico Always On.
Sono presenti problemi di rete/connettività o porte bloccate a livello di firewall
Usare i comandi seguenti per testare la connettività in entrambe le direzioni da Node1
a Node2
e Node2
a 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
L'account non è un utente di dominio e non può connettersi al DC e al node remoto
Per verificare se l'account del servizio può connettersi al nodo remoto, seguire questa procedura. I passaggi presuppongono che non si sia connessi con l'account del servizio.
Selezionare Start>Windows PowerShell> fare clic con il pulsante destro del mouse sull'icona.
Selezionare Altro>Esegui come altro utente>Usa un account diverso.
Digitare il nome e la password dell'account del servizio.
Dopo aver aperto Windows PowerShell, digitare il comando seguente per verificare di essersi registrati con l'account del servizio:
whoami
È quindi possibile testare la connessione al node remoto come nel seguente esempio.
$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