Síntoma:

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

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

ves a seguinte mensaxe de erro:

Resultados de DBCC para 'xxxx'.
CHECKDB atopou 0 erros de asignación e 0 erros de consistencia 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 (esperábase: 0xea8a9a2f; real: 0x37adbff8). Ocorreu durante a lectura da páxina (1:28) no ID de base de datos 39 no desprazamento 0x00000000038000 no ficheiro 'xxxx.mdf'. Mensaxes adicionais no SQL Server o rexistro de erros ou o rexistro de eventos do sistema poden proporcionar máis detalles. Esta é unha condición de erro grave que ameaza a integridade da base de datos e debe corrixirse inmediatamente. Complete unha comprobación completa de consistencia da base de datos (DBCC CHECKDB). Este erro pode ser causado por moitos factores; para obter máis información, consulte SQL Server Libros en liña.

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

CHECKDB atopou 0 erros de asignación e 0 erros de consistencia na base de datos 'xxxx'.

Este aínda é un erro de consistencia (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 consistencia lóxica: suma de verificación incorrecta (esperábase: 0x3d17dfef; real: 0xd81748ef). Ocorreu durante a lectura da páxina (1: 0) no ID de base de datos 39 no desprazamento 0000000000000000 no ficheiro 'xxxx.mdf'. Mensaxes adicionais no SQL Server o rexistro de erros ou o rexistro de eventos do sistema poden proporcionar máis detalles. Esta é unha condición de erro grave que ameaza a integridade da base de datos e debe corrixirse inmediatamente. Complete unha comprobación completa de consistencia da base de datos (DBCC CHECKDB). Este erro pode ser causado por moitos factores; para obter máis información, consulte SQL Server Libros en liña.

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

onde 'xxxx.mdf' é o nome do ficheiro MDF corrupto que se está reparando.

Captura de pantalla da mensaxe de erro:

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

Resultados de DBCC para 'xxxx'.
CHECKDB atopou 0 erros de asignación e 0 erros de consistencia 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 (esperábase: 0xcfcd2118; real: 0x6fc599d6). Ocorreu durante a lectura da páxina (1: 1) no ID de base de datos 39 no desprazamento 0x00000000002000 no ficheiro 'xxxx.mdf'. Mensaxes adicionais no SQL Server o rexistro de erros ou o rexistro de eventos do sistema poden proporcionar máis detalles. Esta é unha condición de erro grave que ameaza a integridade da base de datos e debe corrixirse inmediatamente. Complete unha comprobación completa de consistencia da base de datos (DBCC CHECKDB). Este erro pode ser causado por moitos factores; para obter máis información, consulte SQL Server Libros en liña.
Msg 7909, nivel 20, estado 1, liña 8
Fallou a reparación do modo de emerxencia. Debe restauralo desde a copia de seguridade.

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 de recuperación.

Captura de pantalla da mensaxe de erro:

en branco

Explicación precisa:

Os datos do ficheiro MDF almacénanse 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 comprobación na páxina de cabeceira, a 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 o corrupton é grave, pode haber erros continuos (Mensaxe 824) ou seguido doutro 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 causarán o erro (Erro único Msg 824):

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

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

SQL Server versión Ficheiro MDF corrupto Arquivo MDF corrixido por DataNumen SQL Recovery
SQL Server 2014 Erro1_1.mdf Erro1_1_fixed.mdf

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

SQL Server versión Ficheiro MDF corrupto 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