Symptoom:

Tijdens gebruik DBCC CONTROLEERDB met REPAIR_ALLOW_DATA_LOSS parameter om een ​​corrupte .MDF-database te repareren, zoals deze:

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

je ziet de volgende foutmelding:

DBCC-resultaten voor 'xxxx'.
CHECKDB vond 0 allocatiefouten en 0 consistentiefouten in database 'xxxx'.
Msg 824, Level 24, State 2, Line 8
SQL Server een op logische consistentie gebaseerde I / O-fout gedetecteerd: onjuiste checksum (verwacht: 0xea8a9a2f; actueel: 0x37adbff8). Het gebeurde tijdens het lezen van pagina (1:28) in database-ID 39 op offset 0x00000000038000 in bestand 'xxxx.mdf'. Extra berichten in het SQL Server foutenlogboek of systeemgebeurtenislogboek kan meer details bevatten. Dit is een ernstige fout die de integriteit van de database bedreigt en die onmiddellijk moet worden gecorrigeerd. Voer een volledige databaseconsistentiecontrole uit (DBCC CHECKDB). Deze fout kan door veel factoren worden veroorzaakt; zie voor meer informatie SQL Server Boeken online.

waarbij 'xxxx.mdf' de naam is van het corrupte MDF-bestand dat wordt gerepareerd. Hoewel CHECKDB zegt

CHECKDB vond 0 allocatiefouten en 0 consistentiefouten in database 'xxxx'.

Dit is nog steeds een consistentiefout (Bericht 824) in de database.

Screenshot van foutmelding:

logische op consistentie gebaseerde I / O-fout: onjuiste checksum

Als de corruptie ernstig is, zullen er continu foutmeldingen zijn (Bericht 824), zoals hieronder:

Msg 824, Level 24, State 6, Line 2 SQL Server een op logische consistentie gebaseerde I / O-fout gedetecteerd: onjuiste checksum (verwacht: 0x3d17dfef; actueel: 0xd81748ef). Het gebeurde tijdens het lezen van pagina (1: 0) in database-ID 39 op offset 0000000000000000 in bestand 'xxxx.mdf'. Extra berichten in het SQL Server foutenlogboek of systeemgebeurtenislogboek kan meer details bevatten. Dit is een ernstige fout die de integriteit van de database bedreigt en die onmiddellijk moet worden gecorrigeerd. Voer een volledige databaseconsistentiecontrole uit (DBCC CHECKDB). Deze fout kan door veel factoren worden veroorzaakt; zie voor meer informatie SQL Server Boeken online.

Msg 824, Level 24, State 6, Line 4 SQL Server een op logische consistentie gebaseerde I / O-fout gedetecteerd: onjuiste checksum (verwacht: 0x3d17dfef; actueel: 0xd81748ef). Het gebeurde tijdens het lezen van pagina (1: 0) in database-ID 39 op offset 0000000000000000 in bestand 'xxxx.mdf'. Extra berichten in het SQL Server foutenlogboek of systeemgebeurtenislogboek kan meer details bevatten. Dit is een ernstige fout die de integriteit van de database bedreigt en die onmiddellijk moet worden gecorrigeerd. Voer een volledige databaseconsistentiecontrole uit (DBCC CHECKDB). Deze fout kan door veel factoren worden veroorzaakt; zie voor meer informatie SQL Server Boeken online.

waarbij 'xxxx.mdf' de naam is van het corrupte MDF-bestand dat wordt gerepareerd.

Screenshot van foutmelding:

Als de corruptie ernstiger is, kunt u zien Bericht 7909 volgt Bericht 824:

DBCC-resultaten voor 'xxxx'.
CHECKDB vond 0 allocatiefouten en 0 consistentiefouten in database 'xxxx'.
Msg 824, Level 24, State 2, Line 8
SQL Server een op logische consistentie gebaseerde I / O-fout gedetecteerd: onjuiste checksum (verwacht: 0xcfcd2118; actueel: 0x6fc599d6). Het gebeurde tijdens het lezen van pagina (1: 1) in database-ID 39 op offset 0x00000000002000 in bestand 'xxxx.mdf'. Extra berichten in het SQL Server foutenlogboek of systeemgebeurtenislogboek kan meer details bevatten. Dit is een ernstige fout die de integriteit van de database bedreigt en die onmiddellijk moet worden gecorrigeerd. Voer een volledige databaseconsistentiecontrole uit (DBCC CHECKDB). Deze fout kan door veel factoren worden veroorzaakt; zie voor meer informatie SQL Server Boeken online.
Msg 7909, Level 20, State 1, Line 8
De reparatie van de noodmodus is mislukt. U moet herstellen vanaf een back-up.

waarbij 'xxxx' de databasenaam is en 'xxxx.mdf' de fysieke bestandsnaam van de database.

Note Bericht 7909 is een ernstige fout die in veel situaties kan optreden SQL Server denk dat de database niet meer te herstellen is.

Screenshot van foutmelding:

Nauwkeurige uitleg:

De gegevens in het MDF-bestand worden opgeslagen als 8 KB paginas. Elke pagina heeft een optioneel checksum-veld.

Als de DBCC CHECKDB-opdracht de checksum-waarden in de koptekst vindt, de PFS-pagina en sommige gegevenspagina's ongeldig zijn en het probleem niet kan worden opgelost, wordt deze fout gerapporteerd (Bericht 824). Als de corruptie ernstig is, kunnen er voortdurende fouten zijn (Bericht 824) of gevolgd door een andere fout (Bericht 7909).

U kunt ons product gebruiken DataNumen SQL Recovery om de gegevens van het corrupte MDF-bestand te herstellen en deze fout op te lossen.

Voorbeeldbestanden:

Voorbeeld van corrupte MDF-bestanden die de fout veroorzaken (Enkele Msg 824-fout):

SQL Server versie Beschadigd MDF-bestand MDF-bestand opgelost door DataNumen SQL Recovery
SQL Server 2014 Fout1_3.mdf Fout1_3_fixed.mdf

Voorbeeld van corrupte MDF-bestanden die de fout veroorzaken (Continue Msg 824-fouten):

SQL Server versie Beschadigd MDF-bestand MDF-bestand opgelost door DataNumen SQL Recovery
SQL Server 2014 Fout1_1.mdf Fout1_1_vast.mdf

Voorbeeld van corrupte MDF-bestanden die de fout veroorzaken (Msg 824-fout gevolgd door Msg 7909-fout):

SQL Server versie Beschadigd MDF-bestand MDF-bestand opgelost door DataNumen SQL Recovery
SQL Server 2014 Fout1_2.mdf Fout1_2_fixed.mdf

 

Referenties:

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