Síntoma:

Ao usar DBCC CHECKDB con REPAIR_ALLOW_DATA_LOSS parámetro para reparar unha base de datos .MDF corrupta, como este:

DBCC CHECKDB(xxxx, 'REPAIR_ALLOW_DATA_LOSS')

ves a seguinte mensaxe de erro:

Resultados DBCC para 'xxxx'.
CHECKDB atopou 0 erros de asignación e 0 erros de coherencia na base de datos "xxxx".
Msg 824, nivel 24, estado 2, liña 8
SQL Server detectou un erro de E/S baseado na consistencia lóxica: suma de verificación incorrecta (esperado: 0xea8a9a2f; real: 0x37adbff8). Ocorreu durante a lectura da páxina (1:28) na ID de base de datos 39 no desfase 0x00000000038000 no ficheiro 'xxxx.mdf'. Mensaxes adicionais no SQL Server O rexistro de erros ou o rexistro de eventos do sistema pode proporcionar máis detalles. Esta é unha condición de erro grave que ameaza a integridade da base de datos e que debe ser corrixida inmediatamente. Complete unha comprobación completa da coherencia da base de datos (DBCC CHECKDB). Este erro pode ser causado por moitos factores; para máis información, consulte SQL Server Libros Online.

onde "xxxx.mdf" é o nome do ficheiro MDF corrupto que se está a reparar. Aínda que CHECKDB di

CHECKDB atopou 0 erros de asignación e 0 erros de coherencia na base de datos "xxxx".

Este aínda é un erro de coherencia (Mensaxe 824) na base de datos.

Captura de pantalla da mensaxe de erro:

Erro de E/S baseado na consistencia lóxica: suma de verificación incorrecta

Se a corrupción é grave, haberá mensaxes de erro continuas (Mensaxe 824), como a continuación:

Msg 824, nivel 24, estado 6, liña 2 SQL Server detectou un erro de E/S baseado na coherencia lóxica: suma de verificación incorrecta (esperado: 0x3d17dfef; real: 0xd81748ef). Ocorreu durante a lectura da páxina (1:0) na ID de base de datos 39 no desplazamento 0000000000000000 no ficheiro 'xxxx.mdf'. Mensaxes adicionais no SQL Server O rexistro de erros ou o rexistro de eventos do sistema pode proporcionar máis detalles. Esta é unha condición de erro grave que ameaza a integridade da base de datos e que debe ser corrixida inmediatamente. Complete unha comprobación completa da coherencia da base de datos (DBCC CHECKDB). Este erro pode ser causado por moitos factores; para máis información, consulte SQL Server Libros Online.

Msg 824, nivel 24, estado 6, liña 4 SQL Server detectou un erro de E/S baseado na coherencia lóxica: suma de verificación incorrecta (esperado: 0x3d17dfef; real: 0xd81748ef). Ocorreu durante a lectura da páxina (1:0) na ID de base de datos 39 no desplazamento 0000000000000000 no ficheiro 'xxxx.mdf'. Mensaxes adicionais no SQL Server O rexistro de erros ou o rexistro de eventos do sistema pode proporcionar máis detalles. Esta é unha condición de erro grave que ameaza a integridade da base de datos e que debe ser corrixida inmediatamente. Complete unha comprobación completa da coherencia da base de datos (DBCC CHECKDB). Este erro pode ser causado por moitos factores; para máis información, consulte SQL Server Libros Online.

onde "xxxx.mdf" é o nome do ficheiro MDF corrupto que se está a reparar.

Captura de pantalla da mensaxe de erro:

Se a corrupción é máis grave, podes ver Mensaxe 7909 segue Mensaxe 824:

Resultados DBCC para 'xxxx'.
CHECKDB atopou 0 erros de asignación e 0 erros de coherencia na base de datos "xxxx".
Msg 824, nivel 24, estado 2, liña 8
SQL Server detectou un erro de E/S baseado na coherencia lóxica: suma de comprobación incorrecta (esperado: 0xcfcd2118; real: 0x6fc599d6). Ocorreu durante a lectura da páxina (1:1) na ID de base de datos 39 no desfase 0x00000000002000 no ficheiro 'xxxx.mdf'. Mensaxes adicionais no SQL Server O rexistro de erros ou o rexistro de eventos do sistema pode proporcionar máis detalles. Esta é unha condición de erro grave que ameaza a integridade da base de datos e que debe ser corrixida inmediatamente. Complete unha comprobación completa da coherencia da base de datos (DBCC CHECKDB). Este erro pode ser causado por moitos factores; para máis información, consulte SQL Server Libros Online.
Msg 7909, nivel 20, estado 1, liña 8
Produciuse un erro na reparación do modo de emerxencia. Debes restaurar desde a copia de seguranza.

onde "xxxx" é o nome da base de datos e "xxxx.mdf" é o nome do ficheiro físico da base de datos.

Nota Mensaxe 7909 é un erro grave que pode ocorrer en moitas situacións sempre que SQL Server creo que a base de datos está fóra da recuperación.

Captura de pantalla da mensaxe de erro:

Explicación precisa:

Os datos do ficheiro MDF gárdanse como 8 KB páxinas. Cada páxina ten un campo de suma de verificación opcional.

Se o comando DBCC CHECKDB atopa os valores da suma de verificación na páxina de cabeceira, páxina PFS e algunhas das páxinas de datos non son válidas e non pode corrixir o problema, informará deste erro (Mensaxe 824). Se a corrupción é grave, pode haber erros continuos (Mensaxe 824) ou seguido por outro erro (Mensaxe 7909).

Podes usar o noso produto DataNumen SQL Recovery para recuperar os datos do ficheiro MDF corrupto e resolver este erro.

Ficheiros de mostra:

Mostra ficheiros MDF corruptos que provocarán o erro (Erro 824 de mensaxe única):

SQL Server versión Ficheiro MDF danado Arquivo MDF corrixido por DataNumen SQL Recovery
SQL Server 2014 Erro1_3.mdf Erro1_3_fixed.mdf

Mostra ficheiros MDF corruptos que provocarán o erro (Erros continuos de Msg 824):

SQL Server versión Ficheiro MDF danado Arquivo MDF corrixido por DataNumen SQL Recovery
SQL Server 2014 Erro1_1.mdf Erro 1_1_fixo.mdf

Mostra ficheiros MDF corruptos que provocarán o erro (Erro de Msg 824 seguido de erro Msg 7909):

SQL Server versión Ficheiro MDF danado Arquivo MDF corrixido por DataNumen SQL Recovery
SQL Server 2014 Erro1_2.mdf Erro1_2_fixed.mdf

 

Referencias:

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