Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden 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 2005 und höhere Versionen Ursprüngliche KB-Nummer: 960791
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
Sie stellen eine Microsoft SQL Server-Datenbank aus einer Sicherung wieder her.
Während des Wiederherstellungsvorgangs erhalten Sie Fehler, die verhindern, dass Sie die Datenbank wiederherstellen.
Sie stellen die Datenbank mithilfe der Option CONTINUE_AFTER_ERROR erfolgreich aus derselben Sicherung wieder her.
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 etwa wie folgt aussieht:
Msg 8967, Level 16, State 216, Serverservername<>, Zeile 2
In DBCC ist ein interner Fehler aufgetreten, der die weitere Verarbeitung verhinderte. Wenden Sie sich an den Kundensupport.
DBCC-Ergebnisse für '<Datenbankname>'.Msg 8921, Level 16, State 1, Serverservername<>, Zeile 1
Die CHECK-Anweisung wurde beendet. Fehler beim Sammeln von Fakten. Möglicherweise ist kein freier Speicherplatz mehr in 'tempdb' vorhanden, oder eine Systemtabelle ist inkonsistent. Überprüfen Sie die vorherigen Fehler.
Darüber hinaus wird eine Meldung, die dem folgenden ähnelt, möglicherweise im SQL Server-Fehlerprotokoll angezeigt:
2007-05-26 07:13:49.21 spid58 DBCC hat eine Seite mit einem LSN über dem aktuellen Ende des Log LSN (<LSN>) für die interne Datenbankmomentaufnahme gefunden. Seite konnte nicht gelesen werden (Datei-ID:Seite-ID), Datenbank '<Datenbankname' (Datenbank-ID 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 die erforderlichen Prüfungen nicht ausführen kann, um die Konsistenz der Datenbank zu bestätigen. Diese Prüfungen konnten aus vielen Gründen nicht durchgeführt werden. Dieses Verhalten kann z. B. auftreten, wenn in der Datenbank grundlegende Inkonsistenzen auftreten, z. B. Metadateninkonsistenzen oder Beschädigungen von Datenbankmomentaufnahmen. Weitere Informationen zur spezifischen Ursache dieses Fehlers können durch Untersuchen des unterschiedlichen Zustands bestimmt 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 der internen Momentaufnahme liest, die eine größere Logsequenznummer (Log Sequence Number, LSN) als das Ende des 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 beendet werden, ohne die Fehlermeldung zu generieren.
Weitere Informationen zu TABLOCK-Hinweisen finden Sie unter Hinweise (Transact-SQL) - Tabelle.