Gespiegelte Datenbanken werden getrennt, nachdem Sie die Datenbank neu gestartet Spiegel in SQL Server

In diesem Artikel erfahren Sie, wie Sie das Problem beheben, bei dem gespiegelte Datenbanken im Zustand Getrennt oder Im Wiederherstellungszustand verbleiben.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2490051

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Sie verfügen über einen Computer, auf dem eine sekundäre instance von Microsoft SQL Server in einer Datenbank mit zwei Servern Spiegel ausgeführt wird.

  • Die CPU-Auslastung erreicht auf dem Computer 100 Prozent, und Sie können den SQL Server-Dienst nicht mit SQL Server Management Tools beenden.

  • Sie beenden den Prozess der SQL Server sekundären instance mithilfe des Task-Managers.

  • Sie starten den sekundären instance von SQL Server neu.

In diesem Szenario befinden sich alle gespiegelten Datenbanken im Zustand Getrennt oder In Wiederherstellung . Darüber hinaus wird im SQL Server Fehlerprotokoll für jede Datenbank eine Fehlermeldung protokolliert, die der folgenden ähnelt:

Umgehung der Wiederherstellung für die Datenbank "Datenbankname", da sie als datenbankspiegelnde Datenbank gekennzeichnet ist, auf die nicht zugegriffen werden kann. Es besteht ein Problem mit der Spiegelungssitzung. Der Sitzung fehlt entweder ein Quorum, oder die Kommunikationslinks werden aufgrund von Problemen mit Links, Endpunktkonfiguration oder Berechtigungen (für das Serverkonto oder sicherheitszertifikat) unterbrochen. Um Zugriff auf die Datenbank zu erhalten, ermitteln Sie, was sich in der Sitzungskonfiguration geändert hat, und machen Sie die Änderung rückgängig.

Ursache

Dieses Problem tritt aufgrund von Problemen in den SQL Server Datenbankspiegelungsendpunkten auf.

Lösung

Verwenden Sie die folgenden Methoden, um dieses Problem zu beheben. Wenn das Problem mit der ersten Methode nicht behoben wird, verwenden Sie die zweite Methode.

Methode 1

Verwenden Sie den Endpunkt auf der Datenbank Spiegel. Gehen Sie dazu wie folgt vor:

  1. Führen Sie in der Prinzipaldatenbank das folgende SQL-Skript aus, um den Endpunkt zu beenden:

    ALTER ENDPOINT <Endpoint Name> STATE=STOPPED
    
  2. Führen Sie das folgende SQL-Skript aus, um den Endpunkt neu zu starten:

    ALTER ENDPOINT <Endpoint Name> STATE=STARTED
    

    Hinweis

    Wenn die Kommunikation zwischen den Endpunkten nach dem Ausführen der Skripts nicht neu gestartet wird, führen Sie die Skripts für die Datenbank Spiegel aus. Danach kann die Datenbank jedoch in den Zustand Angehalten versetzt werden. Wenn dieses Problem auftritt, führen Sie das folgende SQL-Skript aus:

    ALTER DATABASE <Database Name> SET PARTNER RESUME
    

Methode 2

Löschen Sie die Datenbankspiegelungsendpunkte auf beiden Servern, und erstellen Sie sie neu.