Fehlermeldung beim Ausführen des DBCC CHECKDB-Befehls auf einem Computer, der eine SQL Server Datenbank enthält
In diesem Artikel wird erläutert, wie Sie das Problem umgehen, das auftritt, wenn Sie den Befehl auf einem Computer ausführen, der DBCC CHECKDB
eine SQL Server Datenbank enthält.
Ursprüngliche Produktversion: SQL Server 2008
Ursprüngliche KB-Nummer: 960791
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
Sie stellen eine Microsoft SQL Server 2008- oder SQL Server 2005-Datenbank aus einer Sicherung wieder her.
Während des Wiederherstellungsvorgangs erhalten Sie Fehler, die sie daran hindern, die Datenbank wiederherzustellen.
Sie können die Datenbank mithilfe der Option CONTINUE_AFTER_ERROR erfolgreich aus derselben Sicherung wiederherstellen.
Wenn Sie in diesem Szenario den Befehl DBCC CHECKDB auf dem Computer ausführen, der die SQL Server Datenbank enthält, erhalten Sie eine Fehlermeldung, die der folgenden ähnelt:
Msg 8967, Ebene 16, Status 216, Serverservername<>, Zeile 2
In DBCC ist ein interner Fehler aufgetreten, der die weitere Verarbeitung verhindert hat. Wenden Sie sich an den Kundensupport.
DBCC-Ergebnisse für "Datenbankname>"<.Msg 8921, Ebene 16, Status 1, Serverservername<>, Zeile 1
Überprüfen Sie beendet. Beim Sammeln von Fakten wurde ein Fehler erkannt. Möglicherweise ist tempdb nicht verfügbar, oder eine Systemtabelle ist inkonsistent. Überprüfen Sie vorherige Fehler.
Darüber hinaus kann eine Meldung, die der folgenden ähnelt, im SQL Server Fehlerprotokoll angezeigt werden:
2007-05-26 07:13:49.21 spid58 DBCC hat eine Seite mit einer LSN gefunden, die größer ist als die aktuelle LSN (<LSN>) für die interne Datenbank-Momentaufnahme. Seite konnte nicht gelesen werden (Datei-ID:Seiten-ID), Datenbankname< (Datenbank-ID der Datenbank-ID>), LSN = (<LSN>), Typ = 32, isInSparseFile = 1. Führen Sie diesen DBCC-Befehl erneut aus.
Ursache
Dieses Problem tritt auf, wenn der DBCC CHECKDB
Befehl nicht die erforderlichen Überprüfungen durchführen kann, um die Konsistenz der Datenbank zu bestätigen. Diese Überprüfungen konnten aus vielen Gründen nicht durchgeführt werden. Dieses Verhalten kann beispielsweise auftreten, wenn grundlegende Inkonsistenzen in der Datenbank vorliegen, z. B. Metadateninkonsistenzen oder Datenbank-Momentaufnahme Beschädigung. Weitere Informationen zur spezifischen Ursache dieses Fehlers können durch Untersuchen des unterschiedlichen Zustands ermittelt werden, der in der Fehlermeldung angezeigt wird. In dem szenario, das im Abschnitt Symptome beschrieben wird, gibt die Meldung status 216 an, dass der DBCC CHECKDB
Befehl eine Seite aus dem internen Momentaufnahme liest, die eine größere Protokollsequenznummer (Log Sequence Number, LSN) als das Ende der Protokoll-LSN aufweist. Dieses Verhalten kann auftreten, wenn Sie Datenbanken mithilfe der Option CONTINUE_AFTER_ERROR wiederherstellen.
Problemumgehung
Um dieses Problem zu umgehen, verwenden Sie den TABLOCK-Hinweis mit dem DBCC CHECKDB
Befehl. Dadurch kann der DBCC CHECKDB
Befehl abgeschlossen werden, ohne die Fehlermeldung zu generieren.
Weitere Informationen zu TABLOCK-Hinweisen finden Sie auf der folgenden Microsoft-Website: Hinweise (Transact-SQL) – Tabelle.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für