Símptoma:

Quan s'utilitza DBCC CHECKDB amb REPAIR_ALLOW_DATA_LOSS paràmetre per reparar una base de dades .MDF corrupta, com aquesta:

DBCC CHECKDB(xxxx, 'REPAIR_ALLOW_DATA_LOSS')

veus el següent missatge d'error:

Resultats DBCC per a "xxxx".
CHECKDB ha trobat 0 errors d'assignació i 0 errors de consistència a la base de dades "xxxx".
Msx 824, Nivell 24, Estat 2, Línia 8
SQL Server S'ha detectat un error d'E/S basat en la consistència lògica: suma de comprovació incorrecta (esperat: 0xea8a9a2f; real: 0x37adbff8). S'ha produït durant una lectura de la pàgina (1:28) a l'ID de la base de dades 39 al desplaçament 0x00000000038000 al fitxer 'xxxx.mdf'. Missatges addicionals al SQL Server El registre d'errors o el registre d'esdeveniments del sistema poden proporcionar més detalls. Aquesta és una condició d'error greu que amenaça la integritat de la base de dades i s'ha de corregir immediatament. Completeu una comprovació completa de la coherència de la base de dades (DBCC CHECKDB). Aquest error pot ser causat per molts factors; per a més informació, vegeu SQL Server Llibres en línia.

on "xxxx.mdf" és el nom del fitxer MDF corrupte que s'està reparant. Tot i que CHECKDB diu

CHECKDB ha trobat 0 errors d'assignació i 0 errors de consistència a la base de dades "xxxx".

Això encara és un error de coherència (Missatge 824) a la base de dades.

Captura de pantalla del missatge d'error:

Error d'E/S basat en la consistència lògica: suma de comprovació incorrecta

Si la corrupció és greu, hi haurà missatges d'error continus (Missatge 824), com a continuació:

Msx 824, Nivell 24, Estat 6, Línia 2 SQL Server S'ha detectat un error d'E/S basat en la consistència lògica: suma de comprovació incorrecta (esperat: 0x3d17dfef; real: 0xd81748ef). S'ha produït durant una lectura de la pàgina (1:0) a l'ID de la base de dades 39 al desplaçament 0000000000000000 al fitxer 'xxxx.mdf'. Missatges addicionals al SQL Server El registre d'errors o el registre d'esdeveniments del sistema poden proporcionar més detalls. Aquesta és una condició d'error greu que amenaça la integritat de la base de dades i s'ha de corregir immediatament. Completeu una comprovació completa de la coherència de la base de dades (DBCC CHECKDB). Aquest error pot ser causat per molts factors; per a més informació, vegeu SQL Server Llibres en línia.

Msx 824, Nivell 24, Estat 6, Línia 4 SQL Server S'ha detectat un error d'E/S basat en la consistència lògica: suma de comprovació incorrecta (esperat: 0x3d17dfef; real: 0xd81748ef). S'ha produït durant una lectura de la pàgina (1:0) a l'ID de la base de dades 39 al desplaçament 0000000000000000 al fitxer 'xxxx.mdf'. Missatges addicionals al SQL Server El registre d'errors o el registre d'esdeveniments del sistema poden proporcionar més detalls. Aquesta és una condició d'error greu que amenaça la integritat de la base de dades i s'ha de corregir immediatament. Completeu una comprovació completa de la coherència de la base de dades (DBCC CHECKDB). Aquest error pot ser causat per molts factors; per a més informació, vegeu SQL Server Llibres en línia.

on "xxxx.mdf" és el nom del fitxer MDF corrupte que s'està reparant.

Captura de pantalla del missatge d'error:

Si la corrupció és més greu, podeu veure Missatge 7909 segueix Missatge 824:

Resultats DBCC per a "xxxx".
CHECKDB ha trobat 0 errors d'assignació i 0 errors de consistència a la base de dades "xxxx".
Msx 824, Nivell 24, Estat 2, Línia 8
SQL Server S'ha detectat un error d'E/S basat en la consistència lògica: suma de comprovació incorrecta (esperat: 0xcfcd2118; real: 0x6fc599d6). S'ha produït durant una lectura de la pàgina (1:1) a l'identificador de la base de dades 39 al desplaçament 0x00000000002000 al fitxer 'xxxx.mdf'. Missatges addicionals al SQL Server El registre d'errors o el registre d'esdeveniments del sistema poden proporcionar més detalls. Aquesta és una condició d'error greu que amenaça la integritat de la base de dades i s'ha de corregir immediatament. Completeu una comprovació completa de la coherència de la base de dades (DBCC CHECKDB). Aquest error pot ser causat per molts factors; per a més informació, vegeu SQL Server Llibres en línia.
Msx 7909, Nivell 20, Estat 1, Línia 8
La reparació en mode d'emergència ha fallat. Heu de restaurar des de la còpia de seguretat.

on "xxxx" és el nom de la base de dades i "xxxx.mdf" és el nom del fitxer físic de la base de dades.

Nota Missatge 7909 és un error greu que pot ocórrer en moltes situacions sempre SQL Server Crec que la base de dades està més enllà de la recuperació.

Captura de pantalla del missatge d'error:

Explicació precisa:

Les dades del fitxer MDF s'emmagatzemen com a 8 KB pàgines. Cada pàgina té un camp de suma de verificació opcional.

Si l'ordre DBCC CHECKDB troba els valors de la suma de comprovació a la pàgina de capçalera, la pàgina PFS i algunes de les pàgines de dades no són vàlides i no pot corregir el problema, informarà d'aquest error (Missatge 824). Si la corrupció és greu, pot haver-hi errors continus (Missatge 824) o seguit d'un altre error (Missatge 7909).

Podeu utilitzar el nostre producte DataNumen SQL Recovery per recuperar les dades del fitxer MDF corrupte i resoldre aquest error.

Fitxers de mostra:

Mostra fitxers MDF corruptes que provocaran l'error (Error de missatge únic 824):

SQL Server versió Fitxer MDF danyat Fitxer MDF arreglat per DataNumen SQL Recovery
SQL Server 2014 Error1_3.mdf Error1_3_fixed.mdf

Mostra fitxers MDF corruptes que provocaran l'error (Errors continus Msg 824):

SQL Server versió Fitxer MDF danyat Fitxer MDF arreglat per DataNumen SQL Recovery
SQL Server 2014 Error1_1.mdf Error1_1_fixed.mdf

Mostra fitxers MDF corruptes que provocaran l'error (Error Msg 824 seguit d'error Msg 7909):

SQL Server versió Fitxer MDF danyat Fitxer MDF arreglat per DataNumen SQL Recovery
SQL Server 2014 Error1_2.mdf Error1_2_fixed.mdf

 

Referències:

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