Symptom:

Når du bruger DBCC CHECKDB med REPAIR_ALLOW_DATA_LOSS parameter til at reparere en korrupt .MDF-database, som denne:

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

du ser følgende fejlmeddelelse:

DBCC-resultater for 'xxxx'.
CHECKDB fandt 0 tildelingsfejl og 0 konsistensfejl i databasen 'xxxx'.
Msg 824, Level 24, State 2, Line 8
SQL Server detekterede en logisk konsistensbaseret I / O-fejl: forkert kontrolsum (forventet: 0xea8a9a2f; faktisk: 0x37adbff8). Det opstod under en læsning af side (1:28) i database-ID 39 ved forskydning 0x00000000038000 i filen 'xxxx.mdf'. Yderligere meddelelser i SQL Server fejllog eller systemhændelseslog kan give flere detaljer. Dette er en alvorlig fejltilstand, der truer databaseintegritet og skal rettes med det samme. Udfør en komplet kontrol af databasekonsistens (DBCC CHECKDB). Denne fejl kan skyldes mange faktorer; for mere information, se SQL Server Bøger online.

hvor 'xxxx.mdf' er navnet på den korrupte MDF-fil, der repareres. Selvom CHECKDB siger

CHECKDB fandt 0 tildelingsfejl og 0 konsistensfejl i databasen 'xxxx'.

Dette er stadig en konsistensfejl (Meddelelse 824) i databasen.

Skærmbillede af fejlmeddelelse:

logisk konsistensbaseret I / O-fejl: forkert kontrolsum

Hvis korruption er alvorlig, vil der være kontinuerlige fejlmeddelelser (Meddelelse 824), som nedenfor:

Msg 824, Level 24, State 6, Line 2 SQL Server registreret en logisk konsistensbaseret I / O-fejl: forkert kontrolsum (forventet: 0x3d17dfef; faktisk: 0xd81748ef). Det opstod under en læsning af side (1: 0) i database-ID 39 ved offset 0000000000000000 i filen 'xxxx.mdf'. Yderligere meddelelser i SQL Server fejllog eller systemhændelseslog kan give flere detaljer. Dette er en alvorlig fejltilstand, der truer databaseintegritet og skal rettes med det samme. Udfør en komplet kontrol af databasekonsistens (DBCC CHECKDB). Denne fejl kan skyldes mange faktorer; for mere information, se SQL Server Bøger online.

Msg 824, Level 24, State 6, Line 4 SQL Server registreret en logisk konsistensbaseret I / O-fejl: forkert kontrolsum (forventet: 0x3d17dfef; faktisk: 0xd81748ef). Det opstod under en læsning af side (1: 0) i database-ID 39 ved offset 0000000000000000 i filen 'xxxx.mdf'. Yderligere meddelelser i SQL Server fejllog eller systemhændelseslog kan give flere detaljer. Dette er en alvorlig fejltilstand, der truer databaseintegritet og skal rettes med det samme. Udfør en komplet kontrol af databasekonsistens (DBCC CHECKDB). Denne fejl kan skyldes mange faktorer; for mere information, se SQL Server Bøger online.

hvor 'xxxx.mdf' er navnet på den korrupte MDF-fil, der repareres.

Skærmbillede af fejlmeddelelse:

Hvis korruption er mere alvorlig, kan du se Meddelelse 7909 følger Meddelelse 824:

DBCC-resultater for 'xxxx'.
CHECKDB fandt 0 tildelingsfejl og 0 konsistensfejl i databasen 'xxxx'.
Msg 824, Level 24, State 2, Line 8
SQL Server registreret en logisk konsistensbaseret I / O-fejl: forkert kontrolsum (forventet: 0xcfcd2118; faktisk: 0x6fc599d6). Det opstod under en læsning af side (1: 1) i database-ID 39 ved forskydning 0x00000000002000 i filen 'xxxx.mdf'. Yderligere meddelelser i SQL Server fejllog eller systemhændelseslog kan give flere detaljer. Dette er en alvorlig fejltilstand, der truer databaseintegritet og skal rettes med det samme. Udfør en komplet kontrol af databasekonsistens (DBCC CHECKDB). Denne fejl kan skyldes mange faktorer; for mere information, se SQL Server Bøger online.
Msg 7909, Level 20, State 1, Line 8
Reparationen i nødstilstand mislykkedes. Du skal gendanne fra sikkerhedskopien.

hvor 'xxxx' er databasenavnet og 'xxxx.mdf' er databasens fysiske filnavn.

Bemærk Meddelelse 7909 er en alvorlig fejl, der kan opstå i mange situationer, når som helst SQL Server tror databasen er ud over gendannelse.

Skærmbillede af fejlmeddelelse:

Præcis forklaring:

Dataene i MDF-filen er gemt som 8KB sider. Hver side har et valgfrit kontrolsumfelt.

Hvis DBCC CHECKDB-kommandoen finder kontrolsumværdierne på sidehovedet, PFS-siden og nogle af datasiderne er ugyldige, og den ikke kan rette problemet, rapporterer den denne fejl (Meddelelse 824). Hvis korruptionen er alvorlig, kan der være kontinuerlige fejl (Meddelelse 824) eller efterfulgt af en anden fejl (Meddelelse 7909).

Du kan bruge vores produkt DataNumen SQL Recovery for at gendanne dataene fra den korrupte MDF-fil og løse denne fejl.

Prøvefiler:

Eksempel på korrupte MDF-filer, der vil forårsage fejlen (Enkelt Msg 824-fejl):

SQL Server udgave Korrupt MDF-fil MDF-fil rettet af DataNumen SQL Recovery
SQL Server 2014 Fejl1_3.mdf Fejl1_3_fixed.mdf

Eksempel på korrupte MDF-filer, der vil forårsage fejlen (Kontinuerlige Msg 824-fejl):

SQL Server udgave Korrupt MDF-fil MDF-fil rettet af DataNumen SQL Recovery
SQL Server 2014 Fejl1_1.mdf Fejl1_1_fixed.mdf

Eksempel på korrupte MDF-filer, der vil forårsage fejlen (Msg 824-fejl efterfulgt af Msg 7909-fejl):

SQL Server udgave Korrupt MDF-fil MDF-fil rettet af DataNumen SQL Recovery
SQL Server 2014 Fejl1_2.mdf Fejl1_2_fixed.mdf

 

Referencer:

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