Problembehandlung von Fehler 3313, 3314, 3414 oder 3456 (SQL Server)

Bei einem Fehler während eines Wiederholungs-, Rollback- oder Wiederherstellungsvorgangs in einer SQL Server-Datenbank wird die Datenbank in den SUSPECT-Status versetzt. Zu diesen Fehlern zählen 3313 (Protokoll-Wiederholungsfehler), 3314 (Protokoll-Rollbackfehler), 3414 (Wiederherstellungsfehler, der einen Neustart der Datenbank verhindert) sowie Fehler 3456 (Wiederholungsfehler bei einer protokollierten Transaktion).

Erklärung

Bei einem Wiederholungs-, Rollback- oder Wiederherstellungsfehler wird die Datenbank in den SUSPECT-Status versetzt, da die primäre Dateigruppe und möglicherweise andere Dateigruppen fehlerverdächtig sind und beschädigt sein könnten. Die Datenbank ist nicht verfügbar, und es sind Aktionen durch den Benutzer erforderlich, um das Problem zu beheben.

HinweisHinweis

Falls dieser Fehler für tempdb auftritt, wird die SQL Server-Instanz heruntergefahren.

Benutzeraktion

Ein Wiederholungs-, Rollback- oder Wiederherstellungsfehler kann durch eine vorübergehende Bedingung oder durch einen dauerhaften Fehler verursacht werden, der bei jedem Startversuch der Datenbank auftritt.

HinweisHinweis

Bei Auftreten eines dieser Fehlerzustände generiert SQL Server in der Regel drei Dateien im Ordner LOG von SQL Server. Die Datei SQLDumpnnnn.txt enthält weiterführende Diagnoseinformationen zu den Fehlern, einschließlich Details zur Transaktion und zur Seite, auf der das Problem aufgetreten ist. Diese Informationen werden in der Regel vom Produktsupportteam zur Analyse der Fehlerursache genutzt.

Um Informationen zur Ursache eines Auftretens von Fehler 3313, 3314, 3414 oder 3456 zu erhalten, überprüfen Sie das Windows-Ereignisprotokoll auf einen vorangegangenen Fehler, der Aufschluss über den aktuellen Fehler geben könnte. Die entsprechenden Benutzeraktionen hängen davon ab, ob die Informationen im Windows-Ereignisprotokoll angeben, dass der SQL Server-Fehler durch ein vorübergehendes Problem oder durch einen dauerhaften Fehler verursacht wurde.

Vorübergehendes Problem:

  1. Versuchen Sie, die Datenbank durch Ausführen der folgenden ALTER DATABASETransact-SQL-Anweisung online zu schalten:

    ALTER DATABASE <database name> SET ONLINE;
    
  2. Um festzustellen, ob die Wiederherstellung erfolgreich abgeschlossen und die Datenbank wieder online geschaltet wurde, überprüfen Sie das Fehlerprotokoll sowie die sys.databases-Katalogsicht.

  3. Wenn die Datenbank online ist, überprüfen Sie diese mithilfe der DBCC CHECKDBTransact-SQL-Anweisung auf ihre Konsistenz.

Dauerhafter Fehler:

Suchen Sie im SQL Server-Fehlerprotokoll nach dem Fehler, den Sie beheben möchten (3313, 3314, 3414 oder 3356), und überprüfen Sie die vorangegangenen Meldungen, um zu ermitteln, ob die Fehler manuell behoben werden können. Falls die vorher aufgetretenen Fehler behoben werden können, führen Sie eines der folgenden Verfahren aus:

  • Wiederherstellen und Überprüfen der Datenbank auf folgende Weise (empfohlenes Verfahren):

    1. Versuchen Sie, eine Sicherung des Protokollfragments auszuführen.

    2. Stellen Sie die Datenbank mit der RESTORE …WITH NORECOVERY Transact-SQL-Anweisung von einer vollständigen Datenbanksicherung und einer nachfolgenden (optionalen) differenziellen Datenbanksicherung wieder her.

    3. Wenn die Datenbank das vollständige Wiederherstellungsmodell verwendet, wenden Sie mithilfe von RESTORE LOG … WITH NORECOVERY alle Transaktionsprotokollsicherungen an, die nach der vollständigen oder differenziellen Sicherung bis zum Zeitpunkt des Fehlers ausgeführt wurden.

    4. Wenn Sie die Datenbank möglichst zeitnah zum Fehlerzeitpunkt wiederhergestellt haben, stellen Sie die Datenbank mit RESTORE DATABASE <database_name> WITH RECOVERY wieder her.

    5. Nachdem die Datenbank online geschaltet wurde, überprüfen Sie die Datenbank mithilfe der DBCC CHECKDBTransact-SQL-Anweisung auf ihre Konsistenz.

  • Versuchen Sie, die Datenbank mit den Schritten, die weiter oben in diesem Abschnitt für ein vorübergehendes Problem beschrieben wurden, wieder online zu schalten.

  • Verwenden Sie den Notfallmodus wie folgt:

    1. Versetzen Sie die Datenbank mit der folgenden ALTER DATABASETransact-SQL-Anweisung in den EMERGENCY-Status:

      ALTER DATABASE <database_name> SET EMERGENCY; 
      
    2. Überprüfen Sie die Ausgabe der ALTER DATABASE-Anweisung und des SQL Server-Fehlerprotokolls.

    3. Überprüfen Sie den Status der Datenbank in der sys.databases-Katalogsicht.

    4. Führen Sie mit der DBCC CHECKDB-Anweisung eine Konsistenzüberprüfung für die Datenbank aus, um Ursache und Ausmaß der Beschädigung einzuschätzen.

    5. Nachdem Sie die Ausgabe von DBCC CHECKDB ausgewertet haben, können Sie DBCC CHECKDB zusätzlich mit der REPAIR_ALLOW_DATA_LOSS-Option ausführen.

      VorsichtshinweisVorsicht

      Vor Verwendung der Option sollten Sie sich im Thema DBCC CHECKDB (Transact-SQL) der SQL Server-Onlinedokumentation eingehend über das Beheben von Fehlern im Datenbank-Notfallmodus informieren.

HinweisHinweis

Informationen zum Behandeln von Hardwareproblemen in Zusammenhang mit Fehler 3313, 3314, 3414 oder 3356 finden Sie unter MSSQLSERVER_824.

So kann dieser Fehler vermieden werden

Um zu vermeiden, dass diese Situation erneut auftritt, gehen Sie wie folgt vor:

  1. Überprüfen Sie das SQL Server-Fehlerprotokoll und die Windows-Ereignisprotokolle auf systemweite Probleme, die zu diesem Fehler beitragen können.

  2. Um bekannte Probleme im Zusammenhang mit dem Produkt auszuschließen, die zu dieser Bedingung führen, wenden Sie das neueste kumulative Update auf Ihre SQL Server-Version an.