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

En este artículo se describe el problema que se produce al ejecutar el DBCC CHECKDB comando en un equipo que contiene una base de datos de SQL Server.

Versión original del producto: SQL Server 2008
Número de KB original: 960791

Síntomas

Imagine la siguiente situación:

  • Puede restaurar una base de datos de Microsoft SQL Server 2008 o SQL Server 2005 a partir de una copia de seguridad.

  • Recibe errores durante el proceso de restauración que impiden restaurar la base de datos.

  • La base de datos se restaura correctamente desde la misma copia de seguridad mediante la opción CONTINUE_AFTER_ERROR .

En este escenario, al ejecutar el comando DBCC CHECKDB en el equipo que contiene la base de datos SQL Server, recibirá un mensaje de error similar al siguiente:

Msg 8967, Level 16, State 216, Server <server name>, Line 2
Error interno en DBCC que impedía el procesamiento adicional. Póngase en contacto con el servicio de atención al cliente.
Resultados de DBCC para "nombre> de base de datos"<.

Msg 8921, Level 16, State 1, Server <server name>, Line 1

Comprobación finalizada. Se detectó un error al recopilar hechos. Es posible que tempdb no tenga espacio o que una tabla del sistema sea incoherente. Compruebe los 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 de base de datos interna. No se pudo leer la página (id. de archivo:id. de página), la base de datos '<nombre de base de datos' (id>. de base de datos de id. de base de datos), LSN = (<LSN>), tipo = 32, isInSparseFile = 1. Vuelva a ejecutar este comando DBCC.

Causa

Este problema se produce si el DBCC CHECKDB comando no puede realizar las comprobaciones necesarias para confirmar la coherencia de la base de datos. Estas comprobaciones no se pudieron realizar por muchas razones. Por ejemplo, este comportamiento puede producirse si hay incoherencias fundamentales en la base de datos, como incoherencias de metadatos o daños en la 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 de estado 216 indica que el DBCC CHECKDB comando lee una página de la instantánea interna que tiene un número de secuencia de registro (LSN) mayor que el final del LSN de registro. Este comportamiento puede producirse si restaura bases de datos mediante la opción CONTINUE_AFTER_ERROR .

Solución alternativa

Para solucionar este problema, use la sugerencia TABLOCK con el DBCC CHECKDB comando . Esto permite que el DBCC CHECKDB comando finalice sin generar el mensaje de error.

Para obtener más información sobre las sugerencias TABLOCK, visite el siguiente sitio web de Microsoft: Sugerencias (Transact-SQL) - Tabla.