Simptomai:

Naudojant DBCC CHECKDB su REPAIR_ALLOW_DATA_LOSS parametras, skirtas taisyti sugadintą .MDF duomenų bazę, pavyzdžiui:

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

matote šį klaidos pranešimą:

DBCC rezultatai užklausai „xxxx“.
CHECKDB duomenų bazėje „xxxx“ aptiko 0 paskirstymo klaidų ir 0 nuoseklumo klaidų.
Msg 824, 24 lygis, 2 būsena, 8 eilutė
SQL Server aptiko loginiu nuoseklumu pagrįstą įvesties / išvesties klaidą: neteisinga kontrolinė suma (tikėtasi: 0xea8a9a2f; faktinė: 0x37adbff8). Tai įvyko nuskaitant puslapį (1:28) duomenų bazės ID 39, esant poslinkiui 0x00000000038000 faile „xxxx.mdf“. Papildomi pranešimai SQL Server klaidų žurnalas arba sistemos įvykių žurnalas gali pateikti daugiau informacijos. Tai rimta klaida, kelianti grėsmę duomenų bazės vientisumui ir turi būti nedelsiant ištaisyta. Užbaikite visą duomenų bazės nuoseklumo patikrinimą (DBCC CHECKDB). Šią klaidą gali sukelti daug veiksnių; Norėdami gauti daugiau informacijos, žr SQL Server Knygos internete.

kur „xxxx.mdf“ yra taisomo sugadinto MDF failo pavadinimas. Nors CHECKDB sako

CHECKDB duomenų bazėje „xxxx“ aptiko 0 paskirstymo klaidų ir 0 nuoseklumo klaidų.

Tai vis dar yra nuoseklumo klaida (P. 824) duomenų bazėje.

Klaidos pranešimo ekrano kopija:

loginiu nuoseklumu pagrįsta I/O klaida: neteisinga kontrolinė suma

Jei sugadinimas yra rimtas, bus nuolatiniai klaidų pranešimai (P. 824), kaip nurodyta žemiau:

Msg 824, 24 lygis, 6 būsena, 2 eilutė SQL Server aptiko loginiu nuoseklumu pagrįstą įvesties / išvesties klaidą: neteisinga kontrolinė suma (tikėtasi: 0x3d17dfef; faktinė: 0xd81748ef). Tai įvyko nuskaitant puslapį (1:0) duomenų bazės ID 39, esant poslinkiui 0000000000000000 faile „xxxx.mdf“. Papildomi pranešimai SQL Server klaidų žurnalas arba sistemos įvykių žurnalas gali pateikti daugiau informacijos. Tai rimta klaida, kelianti grėsmę duomenų bazės vientisumui ir turi būti nedelsiant ištaisyta. Užbaikite visą duomenų bazės nuoseklumo patikrinimą (DBCC CHECKDB). Šią klaidą gali sukelti daug veiksnių; Norėdami gauti daugiau informacijos, žr SQL Server Knygos internete.

Msg 824, 24 lygis, 6 būsena, 4 eilutė SQL Server aptiko loginiu nuoseklumu pagrįstą įvesties / išvesties klaidą: neteisinga kontrolinė suma (tikėtasi: 0x3d17dfef; faktinė: 0xd81748ef). Tai įvyko nuskaitant puslapį (1:0) duomenų bazės ID 39, esant poslinkiui 0000000000000000 faile „xxxx.mdf“. Papildomi pranešimai SQL Server klaidų žurnalas arba sistemos įvykių žurnalas gali pateikti daugiau informacijos. Tai rimta klaida, kelianti grėsmę duomenų bazės vientisumui ir turi būti nedelsiant ištaisyta. Užbaikite visą duomenų bazės nuoseklumo patikrinimą (DBCC CHECKDB). Šią klaidą gali sukelti daug veiksnių; Norėdami gauti daugiau informacijos, žr SQL Server Knygos internete.

kur „xxxx.mdf“ yra taisomo sugadinto MDF failo pavadinimas.

Klaidos pranešimo ekrano kopija:

Jei korupcija rimtesnė, galite pamatyti P. 7909 taip P. 824:

DBCC rezultatai užklausai „xxxx“.
CHECKDB duomenų bazėje „xxxx“ aptiko 0 paskirstymo klaidų ir 0 nuoseklumo klaidų.
Msg 824, 24 lygis, 2 būsena, 8 eilutė
SQL Server aptiko loginiu nuoseklumu pagrįstą įvesties / išvesties klaidą: neteisinga kontrolinė suma (tikėtasi: 0xcfcd2118; faktinė: 0x6fc599d6). Tai įvyko nuskaitant puslapį (1:1) duomenų bazės ID 39, esant poslinkiui 0x00000000002000 faile „xxxx.mdf“. Papildomi pranešimai SQL Server klaidų žurnalas arba sistemos įvykių žurnalas gali pateikti daugiau informacijos. Tai rimta klaida, kelianti grėsmę duomenų bazės vientisumui ir turi būti nedelsiant ištaisyta. Užbaikite visą duomenų bazės nuoseklumo patikrinimą (DBCC CHECKDB). Šią klaidą gali sukelti daug veiksnių; Norėdami gauti daugiau informacijos, žr SQL Server Knygos internete.
Msg 7909, 20 lygis, 1 būsena, 8 eilutė
Nepavyko taisyti avarinio režimo. Turite atkurti iš atsarginės kopijos.

kur „xxxx“ yra duomenų bazės pavadinimas, o „xxxx.mdf“ yra duomenų bazės fizinio failo pavadinimas.

pastabos P. 7909 yra rimta klaida, kuri gali įvykti daugelyje situacijų SQL Server manote, kad duomenų bazės negalima atkurti.

Klaidos pranešimo ekrano kopija:

Tikslus paaiškinimas:

MDF failo duomenys saugomi kaip 8 KB puslapiai. Kiekviename puslapyje yra pasirenkamas kontrolinės sumos laukas.

Jei komanda DBCC CHECKDB randa kontrolinės sumos reikšmes antraštės puslapyje, PFS puslapyje ir kai kurie duomenų puslapiai yra neteisingi ir ji negali išspręsti problemos, ji praneš apie šią klaidą (P. 824). Jei korupcija rimta, gali būti nuolatinių klaidų (P. 824) arba po jos yra kita klaida (P. 7909).

Galite naudoti mūsų gaminį DataNumen SQL Recovery Norėdami atkurti duomenis iš sugadinto MDF failo ir išspręsti šią klaidą.

Failų pavyzdžiai:

Paimkite sugadintus MDF failus, kurie sukels klaidą (Vieno pranešimo 824 klaida):

SQL Server versija Sugadintas MDF failas MDF failas pataisytas DataNumen SQL Recovery
SQL Server 2014 Klaida1_3.mdf Klaida1_3_fixed.mdf

Paimkite sugadintus MDF failus, kurie sukels klaidą (Nuolatinės Msg 824 klaidos):

SQL Server versija Sugadintas MDF failas MDF failas pataisytas DataNumen SQL Recovery
SQL Server 2014 Klaida1_1.mdf Klaida1_1_fixed.mdf

Paimkite sugadintus MDF failus, kurie sukels klaidą (Msg 824 klaida ir Msg 7909 klaida):

SQL Server versija Sugadintas MDF failas MDF failas pataisytas DataNumen SQL Recovery
SQL Server 2014 Klaida1_2.mdf Klaida1_2_fixed.mdf

 

Nuorodos:

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