Symptom:

När man använder DBCC CHECKDB med REPAIR_ALLOW_DATA_LOSS parameter för att reparera en korrupt .MDF-databas, så här:

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

visas följande felmeddelande:

DBCC-resultat för 'xxxx'.
CHECKDB hittade 0 allokeringsfel och 0 konsistensfel i databasen 'xxxx'.
Msg 824, Nivå 24, Stat 2, Linje 8
SQL Server upptäckte ett logiskt konsistensbaserat I / O-fel: fel kontrollsumma (förväntat: 0xea8a9a2f; faktiskt: 0x37adbff8). Det inträffade under en avläsning av sidan (1:28) i databas-ID 39 vid förskjutning 0x00000000038000 i filen 'xxxx.mdf'. Ytterligare meddelanden i SQL Server fellogg eller systemhändelselogg kan ge mer detaljer. Detta är ett allvarligt felvillkor som hotar databasens integritet och måste korrigeras omedelbart. Gör en fullständig kontroll av databasens konsistens (DBCC CHECKDB). Detta fel kan orsakas av många faktorer; för mer information, se SQL Server Böcker online.

där 'xxxx.mdf' är namnet på den korrupta MDF-filen som repareras. Även om CHECKDB säger

CHECKDB hittade 0 allokeringsfel och 0 konsistensfel i databasen 'xxxx'.

Detta är fortfarande ett konsekvensfel (Meddelande 824) i databasen.

Skärmdump av felmeddelande:

logiskt konsistensbaserat I / O-fel: fel kontrollsumma

Om korruptionen är allvarlig kommer det att finnas kontinuerliga felmeddelanden (Meddelande 824), som nedan:

Msg 824, Nivå 24, Stat 6, Linje 2 SQL Server upptäckte ett logiskt konsistensbaserat I / O-fel: fel kontrollsumma (förväntat: 0x3d17dfef; faktisk: 0xd81748ef). Det inträffade under en avläsning av sida (1: 0) i databas-ID 39 vid offset 0000000000000000 i filen 'xxxx.mdf'. Ytterligare meddelanden i SQL Server fellogg eller systemhändelselogg kan ge mer detaljer. Detta är ett allvarligt felvillkor som hotar databasens integritet och måste korrigeras omedelbart. Gör en fullständig kontroll av databasens konsistens (DBCC CHECKDB). Detta fel kan orsakas av många faktorer; för mer information, se SQL Server Böcker online.

Msg 824, Nivå 24, Stat 6, Linje 4 SQL Server upptäckte ett logiskt konsistensbaserat I / O-fel: fel kontrollsumma (förväntat: 0x3d17dfef; faktisk: 0xd81748ef). Det inträffade under en avläsning av sida (1: 0) i databas-ID 39 vid offset 0000000000000000 i filen 'xxxx.mdf'. Ytterligare meddelanden i SQL Server fellogg eller systemhändelselogg kan ge mer detaljer. Detta är ett allvarligt felvillkor som hotar databasens integritet och måste korrigeras omedelbart. Gör en fullständig kontroll av databasens konsistens (DBCC CHECKDB). Detta fel kan orsakas av många faktorer; för mer information, se SQL Server Böcker online.

där 'xxxx.mdf' är namnet på den korrupta MDF-filen som repareras.

Skärmdump av felmeddelande:

Om korruptionen är allvarligare kan du se Meddelande 7909 följer Meddelande 824:

DBCC-resultat för 'xxxx'.
CHECKDB hittade 0 allokeringsfel och 0 konsistensfel i databasen 'xxxx'.
Msg 824, Nivå 24, Stat 2, Linje 8
SQL Server upptäckte ett logiskt konsistensbaserat I / O-fel: fel kontrollsumma (förväntat: 0xcfcd2118; faktisk: 0x6fc599d6). Det inträffade under en läsning av sida (1: 1) i databas-ID 39 vid förskjutning 0x00000000002000 i filen 'xxxx.mdf'. Ytterligare meddelanden i SQL Server fellogg eller systemhändelselogg kan ge mer detaljer. Detta är ett allvarligt felvillkor som hotar databasens integritet och måste korrigeras omedelbart. Gör en fullständig kontroll av databasens konsistens (DBCC CHECKDB). Detta fel kan orsakas av många faktorer; för mer information, se SQL Server Böcker online.
Msg 7909, Nivå 20, Stat 1, Linje 8
Reparationen i nödläge misslyckades. Du måste återställa från säkerhetskopian.

där 'xxxx' är databasnamnet och 'xxxx.mdf' är databasens fysiska filnamn.

Anmärkningar Meddelande 7909 är ett allvarligt fel som kan uppstå i många situationer när som helst SQL Server tror databasen är bortom återhämtning.

Skärmdump av felmeddelande:

Exakt förklaring:

Data i MDF-filen lagras som 8KB sidor. Varje sida har ett valfritt kontrollsummafält.

Om DBCC CHECKDB-kommandot hittar kontrollsummans värden på sidhuvudet, PFS-sidan och några av datasidorna är ogiltiga och det inte kan rätta till problemet, kommer det att rapportera detta fel (Meddelande 824). Om korruptionen är allvarlig kan det förekomma kontinuerliga fel (Meddelande 824) eller följt av ett annat fel (Meddelande 7909).

Du kan använda vår produkt DataNumen SQL Recovery för att återställa data från den skadade MDF-filen och lösa detta fel.

Exempel på filer:

Exempel på korrupta MDF-filer som orsakar felet (Enkelt Msg 824-fel):

SQL Server version Skadad MDF-fil MDF-fil fixad av DataNumen SQL Recovery
SQL Server 2014 Fel1_3.mdf Fel1_3_fixed.mdf

Exempel på korrupta MDF-filer som orsakar felet (Kontinuerliga Msg 824-fel):

SQL Server version Skadad MDF-fil MDF-fil fixad av DataNumen SQL Recovery
SQL Server 2014 Fel1_1.mdf Fel1_1_fixed.mdf

Exempel på korrupta MDF-filer som orsakar felet (Msg 824-fel följt av Msg 7909-fel):

SQL Server version Skadad MDF-fil MDF-fil fixad av DataNumen SQL Recovery
SQL Server 2014 Fel1_2.mdf Fel1_2_fixed.mdf

 

Referenser:

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