Síntoma:

Cuando usas DBCC COMPROBARDB REPAIR_ALLOW_DATA_LOSS parámetro para reparar una base de datos .MDF corrupta, como este:

DBCC CHECKDB (xxxx, 'REPAIR_ALLOW_DATA_LOSS')

ve el siguiente mensaje de error:

Resultados DBCC para 'xxxx'.
CHECKDB encontró 0 errores de asignación y 0 errores de coherencia en la base de datos 'xxxx'.
Msg 824, nivel 24, estado 2, línea 8
SQL Server detectó un error de E / S basado en la coherencia lógica: suma de comprobación incorrecta (esperado: 0xea8a9a2f; actual: 0x37adbff8). Ocurrió durante una lectura de la página (1:28) en la base de datos ID 39 en el desplazamiento 0x00000000038000 en el archivo 'xxxx.mdf'. Mensajes adicionales en el SQL Server El registro de errores o el registro de eventos del sistema pueden proporcionar más detalles. Esta es una condición de error grave que amenaza la integridad de la base de datos y debe corregirse de inmediato. Complete una verificación de consistencia de la base de datos completa (DBCC CHECKDB). Este error puede deberse a muchos factores; Para más información, ver SQL Server Libros en línea.

donde 'xxxx.mdf' es el nombre del archivo MDF dañado que se está reparando. Aunque CHECKDB dice

CHECKDB encontró 0 errores de asignación y 0 errores de coherencia en la base de datos 'xxxx'.

Este sigue siendo un error de coherencia (Mensaje 824) en la base de datos.

Captura de pantalla del mensaje de error:

error de E / S basado en la coherencia lógica: suma de comprobación incorrecta

Si la corrupción es grave, habrá mensajes de error continuos (Mensaje 824), como a continuación:

Msg 824, nivel 24, estado 6, línea 2 SQL Server detectó un error de E / S basado en la coherencia lógica: suma de comprobación incorrecta (esperado: 0x3d17dfef; actual: 0xd81748ef). Ocurrió durante una lectura de la página (1: 0) en la base de datos ID 39 en el desplazamiento 0000000000000000 en el archivo 'xxxx.mdf'. Mensajes adicionales en el SQL Server El registro de errores o el registro de eventos del sistema pueden proporcionar más detalles. Esta es una condición de error grave que amenaza la integridad de la base de datos y debe corregirse de inmediato. Complete una verificación de consistencia de la base de datos completa (DBCC CHECKDB). Este error puede deberse a muchos factores; Para más información, ver SQL Server Libros en línea.

Msg 824, nivel 24, estado 6, línea 4 SQL Server detectó un error de E / S basado en la coherencia lógica: suma de comprobación incorrecta (esperado: 0x3d17dfef; actual: 0xd81748ef). Ocurrió durante una lectura de la página (1: 0) en la base de datos ID 39 en el desplazamiento 0000000000000000 en el archivo 'xxxx.mdf'. Mensajes adicionales en el SQL Server El registro de errores o el registro de eventos del sistema pueden proporcionar más detalles. Esta es una condición de error grave que amenaza la integridad de la base de datos y debe corregirse de inmediato. Complete una verificación de consistencia de la base de datos completa (DBCC CHECKDB). Este error puede deberse a muchos factores; Para más información, ver SQL Server Libros en línea.

donde 'xxxx.mdf' es el nombre del archivo MDF dañado que se está reparando.

Captura de pantalla del mensaje de error:

Si la corrupción es más grave, es posible que vea Mensaje 7909 siguiente Mensaje 824:

Resultados DBCC para 'xxxx'.
CHECKDB encontró 0 errores de asignación y 0 errores de coherencia en la base de datos 'xxxx'.
Msg 824, nivel 24, estado 2, línea 8
SQL Server detectó un error de E / S basado en la coherencia lógica: suma de comprobación incorrecta (esperado: 0xcfcd2118; actual: 0x6fc599d6). Ocurrió durante una lectura de la página (1: 1) en la base de datos ID 39 en el desplazamiento 0x00000000002000 en el archivo 'xxxx.mdf'. Mensajes adicionales en el SQL Server El registro de errores o el registro de eventos del sistema pueden proporcionar más detalles. Esta es una condición de error grave que amenaza la integridad de la base de datos y debe corregirse de inmediato. Complete una verificación de consistencia de la base de datos completa (DBCC CHECKDB). Este error puede deberse a muchos factores; Para más información, ver SQL Server Libros en línea.
Msg 7909, nivel 20, estado 1, línea 8
La reparación en modo de emergencia falló. Debe restaurar desde la copia de seguridad.

donde 'xxxx' es el nombre de la base de datos y 'xxxx.mdf' es el nombre del archivo físico de la base de datos.

Note Mensaje 7909 es un error grave que puede ocurrir en muchas situaciones siempre que SQL Server Creo que la base de datos no se puede recuperar.

Captura de pantalla del mensaje de error:

Explicación precisa:

Los datos en el archivo MDF se almacenan como 8KB paginas. Cada página tiene un campo de suma de comprobación opcional.

Si el comando DBCC CHECKDB encuentra los valores de suma de comprobación en la página de encabezado, la página PFS y algunas de las páginas de datos no son válidas y no puede corregir el problema, entonces informará este error (Mensaje 824). Si la corrupción es grave, puede haber errores continuos (Mensaje 824) o seguido de otro error (Mensaje 7909).

Puedes usar nuestro producto DataNumen SQL Recovery para recuperar los datos del archivo MDF corrupto y solucionar este error.

Archivos de muestra:

Muestra de archivos MDF corruptos que causarán el error (Error único Msg 824):

SQL Server versión Archivo MDF dañado Archivo MDF arreglado por DataNumen SQL Recovery
SQL Server 2014 Error1_3.mdf Error1_3_fijo.mdf

Muestra de archivos MDF corruptos que causarán el error (Errores de Msg 824 continuos):

SQL Server versión Archivo MDF dañado Archivo MDF arreglado por DataNumen SQL Recovery
SQL Server 2014 Error1_1.mdf error1_1_fijo.mdf

Muestra de archivos MDF corruptos que causarán el error (Msg 824 error seguido de Msg 7909 error):

SQL Server versión Archivo MDF dañado Archivo MDF arreglado por DataNumen SQL Recovery
SQL Server 2014 Error1_2.mdf Error1_2_fijo.mdf

 

Referencias:

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