Partager via


Le réplica de disponibilité est déconnecté dans un groupe de disponibilité Always On

S'applique à : SQL Server

Introduction

  • Nom de la stratégie : État de connexion du réplica de disponibilité
  • Problème : le réplica de disponibilité est déconnecté.
  • Catégorie : Critique
  • Facette : Réplica de disponibilité

Description

Cette stratégie vérifie l'état de la connexion entre les réplicas de disponibilité. La stratégie se trouve dans un état non sain lorsque l'état de la connexion du réplica de disponibilité est DISCONNECTED. Autrement, l'état de la stratégie est sain.

Causes possibles

Le réplica secondaire n’est pas connecté au réplica principal. L’état connecté est DISCONNECTED. Ce problème peut être dû à l’une des raisons suivantes :

Solutions possibles

Vérifiez la configuration du point de terminaison de mise en miroir de bases de données pour les instances du réplica principal et secondaire et mettez à jour la configuration incompatible. Regardez également si le port crée un conflit et, le cas échéant, modifiez le numéro du port.

Voici les solutions possibles à ce problème :

Le port de connexion est peut-être en conflit avec une autre application

Exécutez les commandes suivantes pour diagnostiquer le problème de port :

$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'; "

La commande précédente retourne le numéro de port que vous devez utiliser dans la commande suivante.

$port = "5022"
Get-NetTCPConnection -LocalPort $port
Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess | Select-Object Name, ProductVersion, Path, Id

Le type ou l'algorithme de chiffrement est incompatible

Exécutez cette commande sur les deux serveurs et comparez le chiffrement pour vérifier que les deux sont identiques.

$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"

Le point de terminaison de connexion a été supprimé ou n’est pas démarré

Exécutez la commande suivante si le point de terminaison de mise en miroir se ferme puis est démarré.

$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"

Exécutez la commande suivante si vous pensez que le point de terminaison ne répond pas aux connexions ou n’est pas en cours d’exécution.

$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"

Avertissement

L’exécution de la commande avec STATE = stopped arrête votre point de terminaison et interrompt temporairement le flux de trafic AlwaysOn.

Problèmes de réseau/connectivité, ou ports bloqués sur le pare-feu

Utilisez les commandes suivantes pour tester la connectivité dans les deux sens, de Node1 à Node2, et de Node2 à 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

Le compte n’est pas un utilisateur de domaine et ne peut pas se connecter au DC et au nœud distant

Pour tester si le compte de service peut se connecter au nœud distant, effectuez les étapes suivantes. Ces étapes supposent que vous n’êtes pas connecté avec le compte de service.

  1. Sélectionnez Démarrer>Windows PowerShell> en cliquant avec le bouton droit sur l’icône.

  2. Sélectionnez Plus>Exécuter en tant qu’autre utilisateur>Utiliser un autre compte.

  3. Tapez le nom et le mot de passe du compte de service.

  4. Une fois que Windows PowerShell s’ouvre, tapez la commande suivante pour vérifier que vous vous êtes connecté avec le compte de service :

    whoami
    
  5. Vous pouvez ensuite tester la connexion au nœud distant, comme dans l’exemple suivant.

    $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