Verfügbarkeitsreplikat ist in einer Always On-Verfügbarkeitsgruppe getrennt

Gilt für:SQL Server

Einführung

  • Richtlinienname: Verbindungsstatus des Verfügbarkeitsreplikats
  • Problem: Das Verfügbarkeitsreplikat wurde getrennt
  • Kategorie:Kritisch
  • Facet: Verfügbarkeitsreplikat

BESCHREIBUNG

Diese Richtlinie überprüft den Verbindungsstatus zwischen Verfügbarkeitsreplikaten. Die Richtlinie befindet sich in einem fehlerhaften Zustand, wenn der Verbindungsstatus des Verfügbarkeitsreplikats DISCONNECTED lautet. Die Richtlinie befindet sich andernfalls in einem ordnungsgemäßen Zustand.

Mögliche Ursachen

Das sekundäre Replikat ist nicht mit dem primären Replikat verbunden. Der Status ist DISCONNECTED. Dieses Problem kann einen der folgenden Gründe haben:

Mögliche Lösungen

Überprüfen Sie die Datenbankspiegelungs-Endpunktkonfiguration für die Instanzen des primären und sekundären Replikats, und aktualisieren Sie die nicht übereinstimmende Konfiguration. Überprüfen Sie außerdem, ob für den Port ein Konflikt besteht, und ändern Sie ggf. die Portnummer.

Für dieses Problem gibt es die folgenden möglichen Lösungen:

Für den Verbindungsport besteht ein Konflikt mit einer anderen Anwendung

Führen Sie die folgenden Befehle aus, um Portprobleme zu diagnostizieren:

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

Der vorherige Befehl gibt die Portnummer zurück, die Sie im folgenden Befehl verwenden müssen.

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

Der Verschlüsselungstyp oder der Algorithmus stimmt nicht überein

Führen Sie diesen Befehl auf beiden Servern aus, vergleichen Sie die Verschlüsselung, und stellen Sie sicher, dass beide identisch sind.

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

Der Verbindungsendpunkt wurde gelöscht oder nicht gestartet

Führen Sie den folgenden Befehl aus, wenn der Spiegelungsendpunkt beendet wird und gestartet wird.

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

Führen Sie den folgenden Befehl aus, wenn Sie vermuten, dass der Endpunkt nicht auf Verbindungen reagiert oder nicht ausgeführt wird.

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

Warnung

Wenn Sie den Befehl STATE = stopped ausführen, wird Ihr Endpunkt beendet und der Always On-Datenverkehrsfluss vorübergehend unterbrochen.

Netzwerk- oder Konnektivitätsprobleme oder Ports werden an der Firewall blockiert

Verwenden Sie die folgenden Befehle, um die Konnektivität in beiden Richtungen von Node1 zu Node2 und von Node2 zu Node1 zu testen:

$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

Das Konto ist kein Domänenbenutzer und kann keine Verbindung mit dem DC und mit dem Remoteknoten herstellen

Führen Sie die folgenden Schritte aus, um zu testen, ob das Dienstkonto eine Verbindung mit dem Remoteknoten herstellen kann. Die Schritte setzen voraus, dass Sie nicht mit dem Dienstkonto angemeldet sind.

  1. Wählen Sie Start> aus Windows PowerShell>, indem Sie mit der rechten Maustaste auf das Symbol klicken.

  2. Wählen Sie Weitere und >Als anderer Benutzer ausführen>Ein anderes Konto verwenden aus.

  3. Geben Sie den Dienstkontonamen und das Kennwort ein.

  4. Geben Sie nach dem Öffnen von Windows PowerShell den folgenden Befehl ein, um zu überprüfen, ob Sie sich mit dem Dienstkonto angemeldet haben:

    whoami
    
  5. Anschließend können Sie die Verbindung mit dem Remoteknoten wie in dem folgenden Beispiel testen.

    $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