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:

Msg 5125, Nivå 24, Stat 2, Linje 2
Fil 'C: Programfiler Microsoft SQL ServerMSSQL12.SQL2014MSSQLDATAError1.mdf 'verkar ha trunkats av operativsystemet. Förväntad storlek är 5120 kB men verklig storlek är 5112 kB.
Msg 3414, Nivå 21, Stat 1, Linje 2
Ett fel inträffade under återställningen och förhindrade att databasen 'Error1' (39: 0) ändradestarting. Diagnostisera återställningsfelen och åtgärda dem, eller återställ från en känd säkerhetskopia. Om fel inte korrigeras eller förväntas, kontakta teknisk support.

där 'Error1' är namnet på den skadade MDF-databasen som repareras.

Msg 5125 fel är nästa ett allokeringsfel eller ett konsistensfel. Det inträffar när delen av svansen i MDB-filen tas bort på grund av dataskada.

Skärmdump av felmeddelande:

Exakt förklaring:

När den del av svansen på MDB-filen tas bort, CHECKDB kommer att rapportera Msg 5125 fel och försök att fixa det. Om databasen inte kan fixas kommer den att produceras Msg 3414 fel.

Faktiskt kan databasen också återställas om du använder vår produkt DataNumen SQL Recovery att göra uppgiften.

Exempel på filer:

SQL Server version Skadad MDF-fil MDF-fil fixad av DataNumen SQL Recovery
SQL Server 2014 Error8.mdf Error8_fixed.mdf

Referenser: