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:

Rezultatele 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 I / O bazată pe consistență logică: sumă de verificare incorectă (așteptat: 0xea8a9a2f; real: 0x37adbff8). A apărut în timpul citirii paginii (1:28) în baza de date ID 39 la offset 0x00000000038000 în fișierul „xxxx.mdf”. Mesaje suplimentare în SQL Server jurnalul de erori sau jurnalul de evenimente al sistemului poate oferi mai multe detalii. Aceasta este o condiție de eroare severă care amenință integritatea bazei de date și trebuie corectată imediat. Finalizați o verificare completă a consistenței bazei de date (DBCC CHECKDB). Această eroare poate fi cauzată de mai mulți factori; pentru mai multe informații, consultați SQL Server Cărți online.

unde „xxxx.mdf” este numele fișierului MDF corupt care se repară. 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ță (Msg 824) în baza de date.

Captură de ecran a mesajului de eroare:

eroare I / O bazată pe consistență logică: sumă de verificare incorectă

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

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

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

unde „xxxx.mdf” este numele fișierului MDF corupt care se repară.

Captură de ecran a mesajului de eroare:

Dacă corupția este mai severă, s-ar putea să vedeți Msg 7909 urmează Msg 824:

Rezultatele 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 I / O bazată pe consistență logică: sumă de verificare incorectă (așteptat: 0xcfcd2118; real: 0x6fc599d6). A apărut în timpul unei citiri a paginii (1: 1) în baza de date ID 39 la offset 0x00000000002000 în fișierul „xxxx.mdf”. Mesaje suplimentare în SQL Server jurnalul de erori sau jurnalul de evenimente al sistemului poate oferi mai multe detalii. Aceasta este o condiție de eroare severă care amenință integritatea bazei de date și trebuie corectată imediat. Finalizați o verificare completă a consistenței bazei de date (DBCC CHECKDB). Această eroare poate fi cauzată de mai mulți factori; pentru mai multe informații, consultați SQL Server Cărți online.
Msg 7909, nivelul 20, starea 1, linia 8
Repararea în modul de urgență a eșuat. Trebuie să restaurați din copie de rezervă.

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

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

Captură de ecran a mesajului de eroare:

necompletat

Explicație precisă:

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

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

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

Exemple de fișiere:

Exemplu de fișiere MDF corupte care vor cauza eroarea (Eroare Msg 824 unică):

SQL Server versiune Fișier MDF corupt Fișier MDF remediat de DataNumen SQL Recovery
SQL Server 2014 Eroare1_3.mdf Eroare1_3_fixed.mdf

Exemplu de fișiere MDF corupte care vor cauza eroarea (Eroare continuă Msg 824):

SQL Server versiune Fișier MDF corupt Fișier MDF remediat de DataNumen SQL Recovery
SQL Server 2014 Eroare1_1.mdf Eroare1_1_fixed.mdf

Exemplu 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 remediat de DataNumen SQL Recovery
SQL Server 2014 Eroare1_2.mdf Eroare1_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