Freigeben über


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. Dies kann auf einen Fehler hinweisen, der vom Betriebssystem erkannt wurde, oder einen internen Konsistenzfehler, der von SQL Server erkannt wurde.
Der SQL Server-Datenbank-Engine führt logische Überprüfungen der Konsistenz des Transaktionsprotokollinhalts aus, 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.
  • Status 2 und 3 Beim Durchführen der Wiederherstellung während eines RESTORE-Vorgangs wurde ein ungültiger Protokollblock gefunden.
  • Status 4 bis 12 Diese sind alle Überprüfungen von Protokollblöcken beim Verarbeiten 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:

  • Wiederherstellung aus einer Sicherung: Wiederherstellen aus einer bekannten gut geeigneten Sicherung, um aus 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.

  • Erstellen Sie das Protokoll neu: Wenn Sie eine Sicherung nicht wiederherstellen können, können Sie die Datenbank möglicherweise online übertragen, 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 Sie Protokolle auf Systemprobleme: Überprüfen Sie außerdem das Systemereignisprotokoll und Fehlerprotokolle, um Probleme innerhalb des Systems zu identifizieren, die das Problem möglicherweise verursacht haben.