Fehlermeldung beim Ausführen des Befehls DBCC CHECKDB auf einem Computer, der eine SQL Server Datenbank enthält

In diesem Artikel hepls Sie das Problem umgehen, das auftritt, wenn Sie den DBCC CHECKDB Befehl auf einem Computer ausführen, der eine SQL Server Datenbank enthält.

Original Version des Produkts:   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 werden Fehler angezeigt, die eine Wiederherstellung der Datenbank verhindern.

  • Sie haben die Datenbank erfolgreich aus der gleichen Sicherung wiederhergestellt, indem Sie die Option CONTINUE_AFTER_ERROR verwenden.

In diesem Szenario wird beim Ausführen des Befehls DBCC CHECKDB auf dem Computer, der die SQL Server Datenbank enthält, eine Fehlermeldung angezeigt, die der folgenden ähnelt:

Msg 8967, Ebene 16, Status 216, Server <server name> , Anschluss 2
In DBCC ist ein interner Fehler aufgetreten, der die weitere Verarbeitung verhindert hat. Wenden Sie sich an den Kunden Support.
DBCC-Ergebnisse für ' <database name> '.

Msg 8921, Ebene 16, Status 1, Server <server name> , Anschluss 1

Überprüfung beendet. Beim Sammeln von Fakten wurde ein Fehler erkannt. Möglicherweise ist tempdb nicht genügend Speicherplatz oder eine Systemtabelle inkonsistent. Überprüfen Sie frühere Fehler.

Darüber hinaus wird möglicherweise eine Meldung ähnlich der folgenden im SQL Server Fehlerprotokoll angezeigt:

2007-05-26 07:13:49.21 spid58 DBCC hat eine Seite mit einer LSN erreicht, die größer als das aktuelle Ende der Protokoll-LSN ( <LSN> ) für die interne Datenbank-Momentaufnahme ist. Seite konnte nicht gelesen werden (Datei-ID: Seiten-ID), Datenbank ' <database name' (database ID database 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 ausgeführt werden. Dieses Verhalten kann beispielsweise auftreten, wenn es grundlegende Inkonsistenzen in der Datenbank gibt, beispielsweise Metadaten Inkonsistenzen oder Beschädigungen von Datenbankmomentaufnahmen. Weitere Informationen zur spezifischen Ursache dieses Fehlers können ermittelt werden, indem der unterschiedliche Zustand überprüft wird, 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 gelesen hat, die eine größere Protokollfolgenummer (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 ohne Generieren der Fehlermeldung beendet werden.

Weitere Informationen zu TABLOCK-Tipps finden Sie auf der folgenden Microsoft-Website: Hints (Transact-SQL)-Table.