Symptom:

Beim Benutzen DBCC-CHECKDB mit REPAIR_ALLOW_DATA_LOSS Parameter zum Reparieren einer beschädigten .MDF-Datenbank wie folgt:

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

Sie sehen die folgende Fehlermeldung:

DBCC-Ergebnisse für 'xxxx'.
CHECKDB hat 0 Zuordnungsfehler und 0 Konsistenzfehler in der Datenbank 'xxxx' gefunden.
Nachricht 824, Ebene 24, Status 2, Zeile 8
SQL Server Es wurde ein logischer konsistenzbasierter E / A-Fehler festgestellt: falsche Prüfsumme (erwartet: 0xea8a9a2f; tatsächlich: 0x37a)dbff8). Es trat beim Lesen der Seite (1:28) in der Datenbank-ID 39 bei Offset 0x00000000038000 in der Datei 'xxxx.mdf' auf. Zusätzliche Nachrichten in der SQL Server Das Fehlerprotokoll oder das Systemereignisprotokoll enthält möglicherweise weitere Details. Dies ist eine schwerwiegende Fehlerbedingung, die die Datenbankintegrität gefährdet und sofort behoben werden muss. Führen Sie eine vollständige Datenbankkonsistenzprüfung (DBCC CHECKDB) durch. Dieser Fehler kann durch viele Faktoren verursacht werden. Weitere Informationen finden Sie unter SQL Server Bücher online.

Dabei ist 'xxxx.mdf' der Name der beschädigten MDF-Datei, die repariert wird. Obwohl CHECKDB sagt

CHECKDB hat 0 Zuordnungsfehler und 0 Konsistenzfehler in der Datenbank 'xxxx' gefunden.

Dies ist immer noch ein Konsistenzfehler (Nachricht 824) in der Datenbank.

Screenshot der Fehlermeldung:

logischer konsistenzbasierter E / A-Fehler: falsche Prüfsumme

Wenn die Beschädigung schwerwiegend ist, werden fortlaufend Fehlermeldungen angezeigt (Nachricht 824), wie nachstehend:

Nachricht 824, Ebene 24, Status 6, Zeile 2 SQL Server Es wurde ein logischer konsistenzbasierter E / A-Fehler festgestellt: falsche Prüfsumme (erwartet: 0x3d17dfef; tatsächlich: 0xd81748ef). Es trat beim Lesen der Seite (1: 0) in der Datenbank-ID 39 bei Offset 0000000000000000 in der Datei 'xxxx.mdf' auf. Zusätzliche Nachrichten in der SQL Server Das Fehlerprotokoll oder das Systemereignisprotokoll enthält möglicherweise weitere Details. Dies ist eine schwerwiegende Fehlerbedingung, die die Datenbankintegrität gefährdet und sofort behoben werden muss. Führen Sie eine vollständige Datenbankkonsistenzprüfung (DBCC CHECKDB) durch. Dieser Fehler kann durch viele Faktoren verursacht werden. Weitere Informationen finden Sie unter SQL Server Bücher online.

Nachricht 824, Ebene 24, Status 6, Zeile 4 SQL Server Es wurde ein logischer konsistenzbasierter E / A-Fehler festgestellt: falsche Prüfsumme (erwartet: 0x3d17dfef; tatsächlich: 0xd81748ef). Es trat beim Lesen der Seite (1: 0) in der Datenbank-ID 39 bei Offset 0000000000000000 in der Datei 'xxxx.mdf' auf. Zusätzliche Nachrichten in der SQL Server Das Fehlerprotokoll oder das Systemereignisprotokoll enthält möglicherweise weitere Details. Dies ist eine schwerwiegende Fehlerbedingung, die die Datenbankintegrität gefährdet und sofort behoben werden muss. Führen Sie eine vollständige Datenbankkonsistenzprüfung (DBCC CHECKDB) durch. Dieser Fehler kann durch viele Faktoren verursacht werden. Weitere Informationen finden Sie unter SQL Server Bücher online.

Dabei ist 'xxxx.mdf' der Name der beschädigten MDF-Datei, die repariert wird.

Screenshot der Fehlermeldung:

Wenn die Korruption schwerwiegender ist, sehen Sie möglicherweise Nachricht 7909 folgt Nachricht 824:

DBCC-Ergebnisse für 'xxxx'.
CHECKDB hat 0 Zuordnungsfehler und 0 Konsistenzfehler in der Datenbank 'xxxx' gefunden.
Nachricht 824, Ebene 24, Status 2, Zeile 8
SQL Server Es wurde ein logischer konsistenzbasierter E / A-Fehler festgestellt: falsche Prüfsumme (erwartet: 0xcfcd2118; tatsächlich: 0x6fc599d6). Es trat beim Lesen der Seite (1: 1) in der Datenbank-ID 39 mit dem Offset 0x00000000002000 in der Datei 'xxxx.mdf' auf. Zusätzliche Nachrichten in der SQL Server Das Fehlerprotokoll oder das Systemereignisprotokoll enthält möglicherweise weitere Details. Dies ist eine schwerwiegende Fehlerbedingung, die die Datenbankintegrität gefährdet und sofort behoben werden muss. Führen Sie eine vollständige Datenbankkonsistenzprüfung (DBCC CHECKDB) durch. Dieser Fehler kann durch viele Faktoren verursacht werden. Weitere Informationen finden Sie unter SQL Server Bücher online.
Nachricht 7909, Ebene 20, Status 1, Zeile 8
Die Reparatur im Notfallmodus ist fehlgeschlagen. Sie müssen die Sicherung wiederherstellen.

Dabei ist 'xxxx' der Datenbankname und 'xxxx.mdf' der Name der physischen Datenbankdatei.

Note Nachricht 7909 ist ein schwerwiegender Fehler, der in vielen Situationen auftreten kann SQL Server Ich denke, die Datenbank ist nicht mehr wiederherstellbar.

Screenshot der Fehlermeldung:

Genaue Erklärung:

Die Daten in der MDF-Datei werden als 8 KB gespeichert Seiten. Jede Seite verfügt über ein optionales Prüfsummenfeld.

Wenn der Befehl DBCC CHECKDB die Prüfsummenwerte auf der Headerseite, der PFS-Seite und einigen Datenseiten findet, ist er ungültig und kann das Problem nicht beheben. Dieser Fehler wird gemeldet (Nachricht 824). Wenn die Korruption schwerwiegend ist, kann es zu kontinuierlichen Fehlern kommen (Nachricht 824) oder gefolgt von einem anderen Fehler (Nachricht 7909).

Sie können unser Produkt verwenden DataNumen SQL Recovery um die Daten aus der beschädigten MDF-Datei wiederherzustellen und diesen Fehler zu beheben.

Beispieldateien:

Beispiel für beschädigte MDF-Dateien, die den Fehler verursachen (Single Msg 824 Fehler):

SQL Server Version Beschädigte MDF-Datei MDF-Datei behoben durch DataNumen SQL Recovery
SQL Server 2014 Fehler1_3.mdf Fehler1_3_fixed.mdf

Beispiel für beschädigte MDF-Dateien, die den Fehler verursachen (Kontinuierliche Meldungsfehler 824):

SQL Server Version Beschädigte MDF-Datei MDF-Datei behoben durch DataNumen SQL Recovery
SQL Server 2014 Fehler1_1.mdf Fehler1_1_fixed.mdf

Beispiel für beschädigte MDF-Dateien, die den Fehler verursachen (Fehler Msg 824 gefolgt von Fehler Msg 7909):

SQL Server Version Beschädigte MDF-Datei MDF-Datei behoben durch DataNumen SQL Recovery
SQL Server 2014 Fehler1_2.mdf Fehler1_2_fixed.mdf

 

References:

1. https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-824-database-engine-error?view=sql-server-ver15