Símptoma:

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

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

veieu el següent missatge d'error:

Resultats de 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 ha detectat un error d'E / S basat en la coherència lògica: suma de comprovació incorrecta (esperat: 0xea8a9a2f; real: 0x37adbff8). Es va produir durant la lectura de la pàgina (1:28) a l'ID de base de dades 39 amb el desplaçament 0x00000000038000 al fitxer "xxxx.mdf". Missatges addicionals a SQL Server el registre d'errors o el registre d'esdeveniments del sistema poden proporcionar més detalls. Es tracta d’una condició d’error greu que posa en perill la integritat de la base de dades i s’ha de corregir immediatament. Completeu una comprovació completa de consistència de la base de dades (DBCC CHECKDB). Aquest error pot ser causat per molts factors; per obtenir més informació, vegeu SQL Server Llibres en línia.

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

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

Això continua sent un error de consistència (Missatge 824) a la base de dades.

Captura de pantalla del missatge d'error:

error d'E / S basat en la coherè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 ha detectat un error d'E / S basat en la coherència lògica: suma de comprovació incorrecta (esperat: 0x3d17dfef; real: 0xd81748ef). Es va produir durant la lectura de la pàgina (1: 0) de l'ID de base de dades 39 amb el desplaçament 0000000000000000 al fitxer "xxxx.mdf". Missatges addicionals a SQL Server el registre d'errors o el registre d'esdeveniments del sistema poden proporcionar més detalls. Es tracta d’una condició d’error greu que posa en perill la integritat de la base de dades i s’ha de corregir immediatament. Completeu una comprovació completa de consistència de la base de dades (DBCC CHECKDB). Aquest error pot ser causat per molts factors; per obtenir més informació, vegeu SQL Server Llibres en línia.

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

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

Captura de pantalla del missatge d'error:

Si la corrupció és més greu, és possible que ho vegeu Missatge 7909 segueix Missatge 824:

Resultats de 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 ha detectat un error d'E / S basat en la coherència lògica: suma de comprovació incorrecta (esperat: 0xcfcd2118; real: 0x6fc599d6). Es va produir durant la lectura de la pàgina (1: 1) a l'ID de base de dades 39 amb el desplaçament 0x00000000002000 al fitxer "xxxx.mdf". Missatges addicionals a SQL Server el registre d'errors o el registre d'esdeveniments del sistema poden proporcionar més detalls. Es tracta d’una condició d’error greu que posa en perill la integritat de la base de dades i s’ha de corregir immediatament. Completeu una comprovació completa de consistència de la base de dades (DBCC CHECKDB). Aquest error pot ser causat per molts factors; per obtenir 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 es pot produir 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:

en blanc

Explicació precisa:

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

Si l'ordre DBCC CHECKDB troba els valors de 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 el corrupton és greu, pot haver-hi erros 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 malmès i resoldre aquest error.

Fitxers de mostra:

Mostra de fitxers MDF corruptes que causaran l'error (Error d'un sol missatge 824):

SQL Server versió Fitxer MDF malmès Fitxer MDF solucionat per DataNumen SQL Recovery
SQL Server 2014 Error1_3.mdf Error1_3_fixed.mdf

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

SQL Server versió Fitxer MDF malmès Fitxer MDF solucionat per DataNumen SQL Recovery
SQL Server 2014 Error1_1.mdf Error1_1_fixed.mdf

Mostra de fitxers MDF corruptes que causaran l'error (Error del missatge 824 seguit del missatge 7909):

SQL Server versió Fitxer MDF malmès Fitxer MDF solucionat 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