Simptom:

Atunci când se utilizează DBCC CHECKDB cu REPAIR_ALLOW_DATA_LOSS parametru pentru a repara o bază de date .MDF coruptă, astfel:

DBCC CHECKDB(xxxx, „REPAIR_ALLOW_DATA_LOSS”)

vedeți următorul mesaj de eroare:

Rezultate DBCC pentru „xxxx”.
CHECKDB a găsit 0 erori de alocare și 0 erori de consistență în baza de date „xxxx”.
Msg 824, nivelul 24, starea 2, linia 8
SQL Server a detectat o eroare de I/O bazată pe consistența logică: sumă de control incorectă (așteptată: 0xea8a9a2f; real: 0x37adbff8). A avut loc în timpul unei citiri a paginii (1:28) în ID-ul bazei de date 39 la offset 0x00000000038000 în fișierul „xxxx.mdf”. Mesaje suplimentare în SQL Server jurnalul de erori sau jurnalul de evenimente de sistem poate oferi mai multe detalii. Aceasta este o condiție de eroare gravă care amenință integritatea bazei de date și trebuie corectată imediat. Finalizați o verificare completă a coerenței bazei de date (DBCC CHECKDB). Această eroare poate fi cauzată de mulți factori; pentru mai multe informații, vezi SQL Server Cărți Online.

unde „xxxx.mdf” este numele fișierului MDF corupt care este reparat. Deși CHECKDB spune

CHECKDB a găsit 0 erori de alocare și 0 erori de consistență în baza de date „xxxx”.

Aceasta este încă o eroare de consistență (824) în baza de date.

Captură de ecran a mesajului de eroare:

Eroare I/O bazată pe consistența logică: sumă de control incorectă

Dacă corupția este severă, atunci vor exista mesaje de eroare continue (824), ca mai jos:

Msg 824, nivelul 24, starea 6, linia 2 SQL Server a detectat o eroare de I/O bazată pe consistența logică: sumă de control incorectă (așteptată: 0x3d17dfef; real: 0xd81748ef). A avut loc în timpul unei citiri a paginii (1:0) în ID-ul bazei de date 39 la offset 0000000000000000 în fișierul „xxxx.mdf”. Mesaje suplimentare în SQL Server jurnalul de erori sau jurnalul de evenimente de sistem poate oferi mai multe detalii. Aceasta este o condiție de eroare gravă care amenință integritatea bazei de date și trebuie corectată imediat. Finalizați o verificare completă a coerenței bazei de date (DBCC CHECKDB). Această eroare poate fi cauzată de mulți factori; pentru mai multe informații, vezi SQL Server Cărți Online.

Msg 824, nivelul 24, starea 6, linia 4 SQL Server a detectat o eroare de I/O bazată pe consistența logică: sumă de control incorectă (așteptată: 0x3d17dfef; real: 0xd81748ef). A avut loc în timpul unei citiri a paginii (1:0) în ID-ul bazei de date 39 la offset 0000000000000000 în fișierul „xxxx.mdf”. Mesaje suplimentare în SQL Server jurnalul de erori sau jurnalul de evenimente de sistem poate oferi mai multe detalii. Aceasta este o condiție de eroare gravă care amenință integritatea bazei de date și trebuie corectată imediat. Finalizați o verificare completă a coerenței bazei de date (DBCC CHECKDB). Această eroare poate fi cauzată de mulți factori; pentru mai multe informații, vezi SQL Server Cărți Online.

unde „xxxx.mdf” este numele fișierului MDF corupt care este reparat.

Captură de ecran a mesajului de eroare:

Dacă corupția este mai gravă, puteți vedea 7909 urmează 824:

Rezultate DBCC pentru „xxxx”.
CHECKDB a găsit 0 erori de alocare și 0 erori de consistență în baza de date „xxxx”.
Msg 824, nivelul 24, starea 2, linia 8
SQL Server a detectat o eroare de I/O bazată pe consistența logică: sumă de control incorectă (așteptată: 0xcfcd2118; real: 0x6fc599d6). A avut loc în timpul unei citiri a paginii (1:1) în ID-ul bazei de date 39 la offset 0x00000000002000 în fișierul „xxxx.mdf”. Mesaje suplimentare în SQL Server jurnalul de erori sau jurnalul de evenimente de sistem poate oferi mai multe detalii. Aceasta este o condiție de eroare gravă care amenință integritatea bazei de date și trebuie corectată imediat. Finalizați o verificare completă a coerenței bazei de date (DBCC CHECKDB). Această eroare poate fi cauzată de mulți factori; pentru mai multe informații, vezi SQL Server Cărți Online.
Msg 7909, nivelul 20, starea 1, linia 8
Reparația în modul de urgență a eșuat. Trebuie să restaurați din backup.

unde „xxxx” este numele bazei de date și „xxxx.mdf” este numele fișierului fizic al bazei de date.

notițe 7909 este o eroare gravă care poate apărea în multe situații oricând SQL Server cred că baza de date este dincolo de recuperare.

Captură de ecran a mesajului de eroare:

Explicație precisă:

Datele din fișierul MDF sunt stocate ca 8KB pagini. Fiecare pagină are un câmp opțional pentru suma de control.

Dacă comanda DBCC CHECKDB găsește valorile sumei de control în pagina antet, pagina PFS și unele dintre paginile de date sunt invalide și nu poate corecta problema, atunci va raporta această eroare (824). Dacă corupția este severă, pot exista erori continue (824) sau urmată de o altă eroare (7909).

Puteți folosi produsul nostru DataNumen SQL Recovery pentru a recupera datele din fișierul MDF corupt și pentru a rezolva această eroare.

Exemple de fișiere:

Exemple de fișiere MDF corupte care vor cauza eroarea (Eroare un singur mesaj 824):

SQL Server versiune Fișier MDF corupt Fișier MDF reparat de DataNumen SQL Recovery
SQL Server 2014 Error1_3.mdf Error1_3_fixed.mdf

Exemple de fișiere MDF corupte care vor cauza eroarea (Erori continue Msg 824):

SQL Server versiune Fișier MDF corupt Fișier MDF reparat de DataNumen SQL Recovery
SQL Server 2014 Error1_1.mdf Eroare1_1_fixed.mdf

Exemple de fișiere MDF corupte care vor cauza eroarea (Eroare Msg 824 urmată de eroare Msg 7909):

SQL Server versiune Fișier MDF corupt Fișier MDF reparat de DataNumen SQL Recovery
SQL Server 2014 Error1_2.mdf Error1_2_fixed.mdf

 

Referinte:

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