Ich habe ein Problem mit einer SQL Server 2008-Datenbank.
Starten
DBCC CHECKDB
Ich erhalte diesen Fehler:
SQL Server hat einen logischen konsistenzbasierten E / A-Fehler festgestellt: falsche Prüfsumme (erwartet: 0xd2e00940; tatsächlich: 0x925ef494). Es trat beim Lesen der Seite (1: 15215) in der Datenbank-ID 22 am Offset 0x000000076de000 in der Datei 'C: \ Programme \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ file.mdf' auf. Zusätzliche Meldungen im SQL Server-Fehlerprotokoll oder im Systemereignisprotokoll enthalten 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 in der SQL Server-Onlinedokumentation.
Ich habe die Tabelle gefunden, die das Problem verursacht hat:
DBCC CHECKTABLE
Meldung 824, Ebene 24, Status 2, Zeile 8
SQL Server hat einen logischen konsistenzbasierten E / A-Fehler festgestellt: falsche Prüfsumme (erwartet: 0xd2e00940; tatsächlich: 0x925ef494). Es trat beim Lesen der Seite (1: 15215) in der Datenbank-ID 22 am Offset 0x000000076de000 in der Datei 'C: \ Programme \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ file.mdf' auf. Zusätzliche Meldungen im SQL Server-Fehlerprotokoll oder im Systemereignisprotokoll enthalten 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 in der SQL Server-Onlinedokumentation.
Also habe ich es mit den Reparaturarbeiten versucht:
DBCC CHECKTABLE (table_name, REPAIR_ALLOW_DATA_LOSS)
aber ich bekomme den gleichen Fehler:
Meldung 824, Ebene 24, Status 2, Zeile 8
SQL Server hat einen logischen konsistenzbasierten E / A-Fehler festgestellt: falsche Prüfsumme (erwartet: 0xd2e00940; tatsächlich: 0x925ef494). Es trat beim Lesen der Seite (1: 15215) in der Datenbank-ID 22 am Offset 0x000000076de000 in der Datei 'C: \ Programme \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \ DATA \ file.mdf' auf. Zusätzliche Meldungen im SQL Server-Fehlerprotokoll oder im Systemereignisprotokoll enthalten 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 in der SQL Server-Onlinedokumentation.
Ich habe auch versucht, die Datenbank in den SINGLE_USER-Modus zu versetzen, aber ohne Ergebnis.
Ich kann die Tabelle weder löschen noch abschneiden. Da bekomme ich immer den gleichen Fehler.
Die Tabelle unterliegt keinen Einschränkungen. Es hat einen PK und einen Index, aber ich kann keinen von ihnen löschen.
quelle
Antworten:
Sie müssen die Seite aus einer vollständigen Sicherung wiederherstellen und dann die Protokolle auf die aktuelle Seite weiterleiten, oder Sie müssen eine vollständige Wiederherstellung durchführen.
Ich würde auch chkdsk ausführen, da es den Anschein hat, dass Sie ein Festplattenproblem haben, da dieselbe Seite Probleme meldet, wenn Sie versuchen, es zu reparieren. Führen Sie auch alle Datenträgerverwaltungstools aus und prüfen Sie, ob sie Probleme mit der Festplatte melden.
quelle
Ich habe keine schnelle Lösung gefunden und mich von einem Backup erholt. Ich habe eine Datenbank erstellt, die eine alte Sicherung wiederherstellt. Dann habe ich die Daten in der neuen Datenbank aktualisiert und sie aus der fehlerhaften Datenbank importiert, wobei die fehlerhaften Tabellen umgangen wurden. Schließlich habe ich die kaputte DB durch die neue ersetzt. Danke für deine Hilfe.
quelle