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:
- Für den Verbindungsport besteht ein Konflikt mit einer anderen Anwendung.
- Der Verschlüsselungstyp oder der Algorithmus stimmt nicht überein.
- Der Verbindungsendpunkt wurde gelöscht oder nicht gestartet.
- Es bestehen Netzwerk-/Konnektivitätsprobleme oder Ports werden an der Firewall blockiert.
- Dienst-/Startkonto ist kein Domänenbenutzer und kann keine Verbindung mit dem DC und mit dem Remoteknoten und -port herstellen (z. B. 5022).
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.
Wählen Sie Start> aus Windows PowerShell>, indem Sie mit der rechten Maustaste auf das Symbol klicken.
Wählen Sie Weitere und >Als anderer Benutzer ausführen>Ein anderes Konto verwenden aus.
Geben Sie den Dienstkontonamen und das Kennwort ein.
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
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