MSSQLSERVER_9004

Gilt für:SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 9004
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name LOG_CORRUPT
Meldungstext Fehler beim Verarbeiten des Protokolls für die '%.*ls'-Datenbank. Führen Sie nach Möglichkeit eine Wiederherstellung von einer Sicherung aus. Falls keine Sicherung verfügbar ist, muss das Protokoll möglicherweise neu erstellt werden.

Erklärung

Bei der Verarbeitung des Protokolls während eines Rollbacks, einer Wiederherstellung oder Replikation ist ein Fehler aufgetreten. Dabei kann es sich um einen vom Betriebssystem erkannten Fehler oder um einen von SQL Server erkannten internen Konsistenzfehler handeln.
Der SQL Server-Datenbank-Engine führt logische Konsistenzprüfungen der Inhalte des Transaktionsprotokolls durch, während er sie liest und verarbeitet. Nicht alle Aspekte von Protokollheader, Protokollblöcken und Protokolldatensätzen werden geprüft. Die Statusnummer stellt weitere Informationen zur Art des Fehlers zur Verfügung:

  • Status 1 Der Protokolldateiheader der virtuellen Protokolldatei (VIrtual Log File, VLF) wurde beschädigt. Wenn im Rahmen des Startens der Datenbank beim Dienststart ein beschädigter Protokolldateiheader erkannt wird, wird im ERRORLOG möglicherweise nur Fehler 9004 verzeichnet. Der Protokolldateiheader ist der erste Teil jeder VLF innerhalb eines Transaktionsprotokolls. Der Protokolldateiheader ist nicht mit dem Einzeldateiheader, den ersten 8 KB der Protokolldatei, zu verwechseln. Wenn der Dateiheader beschädigt ist, empfangen Sie möglicherweise Msg 5172, ähnlich wie bei einer beschädigten Headerseite einer Datenbankdatei.
  • Zustand 2 und 3 Ein Protokollblock war ungültig, wenn die Wiederherstellung während eines RESTORE-Vorgangs ausgeführt wurde.
  • Status 4 bis 12 Dies sind alle verschiedene Überprüfungen von Protokollblöcken bei der Verarbeitung von Protokolldatensätzen. Dazu zählen Parität, Sektor und andere logische Prüfungen der Konsistenz des Transaktionsprotokolls

In den meisten Fällen tritt dieser Fehler nur im ERRORLOG oder im Windows-Anwendungsereignisprotokoll mit EventID = 9004 auf, da der Vorgang zur Bearbeitung des Protokolls nicht auf einem direkten Benutzerbefehl basiert (wie etwa die Wiederherstellung, die beim Starten der SQL Server-Engine ausgeführt wird). In diesen Situationen tritt Fehler 9004 häufig zusammen mit Fehler 3414 auf. Einige Abfragen, wie etwa ALTER DATABASE, können jedoch eine Verarbeitung des Protokolls erforderlich machen und daher zu diesen Fehlern führen. Da der Fehler den Schweregrad=21 aufweist, wird die Benutzersitzung getrennt.

Ursache

Fehler 9004 ist ein allgemeiner Fehler, der darauf hinweist, dass die Inhalte des Transaktionsprotokolls beschädigt sind. Der Grund, warum das Protokoll inkonsistent wird, ist den Gründen jedes Beschädigungsproblems von Datenbanken ähnlich, die von der SQL Server-Engine erkannt werden. Um die Ursache für die Beschädigung des Protokolls zu finden, sollten Sie ähnliche Techniken wie für beschädigte Datenbanken einsetzen, einschließlich einer Analyse möglicher Probleme bei Hardware, Dateisystem und E/A. Beachten Sie, dass DBCC CHECKDB das Transaktionsprotokoll im Rahmen seiner Ausführung nicht überprüft und Beschädigungsfehler in Protokollen nicht erkennen kann. Fehler 9004 wird von der SQL Server-Engine selbst ausgelöst.

Benutzeraktion

Durch eine der folgenden Aktionen wird dieser Fehler korrigiert:

  • Wiederherstellen aus einer Sicherung: Wiederherstellen aus einer bekannten guten Sicherung, um nach diesem Problem wiederherzustellen. Wenn der Protokollanteil einer Datenbank- oder Protokollsicherung beschädigte Inhalte enthält, tritt möglicherweise beim RESTORE ein Fehler 9004 auf. In dieser Situation ist das Transaktionsprotokoll in der Sicherung beschädigt.

  • Protokoll neu erstellen: Wenn Sie die Wiederherstellung aus einer Sicherung nicht durchführen können, können Sie die Datenbank möglicherweise online schalten, indem Sie das Transaktionsprotokoll neu erstellen. Sie sollten sich um ein detailliertes Verständnis der Auswirkungen bemühen, die eine Neuerstellung des Transaktionsprotokolls haben kann. Dies schließt den möglichen Verlust der Transaktionskonsistenz in der Datenbank ein. Weitere Informationen zur Neuerstellung des Transaktionsprotokolls finden Sie unter Beheben von Fehlern im Datenbank-Notfallmodus.

  • Untersuchen der Protokolle auf Systemprobleme: Überprüfen Sie außerdem das Systemereignisprotokoll und die Fehlerprotokolle, um Probleme innerhalb des Systems zu identifizieren, die für den Fehler verantwortlich sein können.