Mensaje de error al ejecutar el comando DBCC CHECKDB en un equipo que contiene una base de datos de SQL Server: "error 8967"


Síntomas


Imagine la siguiente situación:
  • Restaure una base de datos de Microsoft SQL Server 2008 o de SQL Server 2005 a partir de una copia de seguridad.
  • Usted recibe errores durante el proceso de restauración que le impiden restaurar la base de datos.
  • La base de datos se restaura correctamente desde la misma copia de seguridad con la opción CONTINUE_AFTER_ERROR.
En este caso, cuando ejecute el comando DBCC CHECKDB en el equipo que contiene la base de datos de SQL Server, recibirá un mensaje de error similar al siguiente:
Msj 8967, nivel 16, estado 216, nombre de servidor <servidor>, error interno de línea 2AN en DBCC que impide el procesamiento. Comunícate con el servicio de asistencia al cliente. Resultados de DBCC para ' <nombre de base de datos> '. MSG 8921, nivel 16, estado 1, servidor <servidor nombre>, line 1Check terminada. Se detectó un error al recopilar hechos. Posiblemente falta espacio para tempdb o una tabla del sistema es incoherente. Comprobar errores anteriores.
Además, se puede mostrar un mensaje similar al siguiente en el registro de errores de SQL Server:
2007-05-26 07:13:49.21 spid58 DBCC encontró una página con un LSN mayor que el final actual del LSN de registro (<LSN>) para su instantánea interna de la base de datos. No se pudo leer la página (ID. de archivo: ID. de página), base de datos ' <nombre de base de datos ' (ID. de base de datos ID>), LSN = (<LSN>), escriba = 32, isInSparseFile = 1. Vuelva a ejecutar este comando DBCC.

Causa


Este problema se produce si el comando DBCC CHECKDB no puede realizar las comprobaciones necesarias para confirmar la coherencia de la base de datos. Estas comprobaciones no se pudieron realizar por muchos motivos. Por ejemplo, este comportamiento puede ocurrir si hay incoherencias fundamentales en la base de datos, como incoherencias de metadatos o daños de instantánea de base de datos. Puede determinarse más información sobre la causa específica de este error examinando el estado diferente que se muestra en el mensaje de error. En el escenario que se describe en la sección "síntomas", el mensaje State 216 indica que el comando DBCC CHECKDB Lee una página de la instantánea interna que tiene un número de secuencia de registro (LSN) mayor que el LSN final del registro. Este comportamiento puede producirse si restaura bases de datos con la opción CONTINUE_AFTER_ERROR.

Solución alternativa


Para evitar este problema, use la sugerencia TABLOCK con el comando DBCC CHECKDB . Esto permite que el comando DBCC CHECKDB finalice sin generar el mensaje de error. Para obtener más información acerca de las sugerencias TABLOCK, visite el siguiente sitio web de Microsoft:

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".