Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Detalles
Elemento | Valor |
---|---|
Nombre del producto | Servidor SQL |
Id. de evento | 8992 |
Origen de eventos | MSSQLSERVER |
Componente | SQLEngine |
Nombre simbólico | DBCC3_CHECK_CATALOG |
Texto del mensaje | Mensaje de comprobación del catálogo ERROR nivel LEVEL estado STATE: MESSAGE. |
Nota:
El mensaje de error 8992 hace referencia a otro mensaje específico (entre 3851 y 3858) sobre la incoherencia real.
Explicación
DBCC CHECKCATALOG
o DBCC CHECKDB
encontró una incoherencia en las tablas de metadatos del sistema para el objeto especificado. Es decir, hay una incoherencia entre el identificador de objeto registrado y el objeto especificado en el mensaje de error.
Este error puede producirse cuando una o varias tablas del sistema se actualizaron manualmente de una manera que crea una incoherencia en los metadatos del sistema. Por ejemplo, puede eliminar manualmente un objeto de la sysobjects
tabla sin quitar filas asociadas en otras tablas, como sysindexes
y syscolumns
.
Este error puede producirse al ejecutarse DBCC CHECKDB
en una base de datos que se actualizó de SQL Server 2000 (8.x) a una versión posterior de SQL Server. En SQL Server 2000 (8.x), DBCC CHECKDB
no se incluye DBCC CHECKCATALOG
la funcionalidad, por lo que el error no se detecta antes de la actualización a menos DBCC CHECKCATALOG
que se ejecute específicamente en la base de datos en SQL Server 2000 (8.x).
Es posible que vea cualquiera de los siguientes errores junto con el error 8992:
Id. del mensaje | Texto del mensaje |
---|---|
3851 |
An invalid row (%ls) was found in the system table sys.%ls%ls. |
3852 |
Row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls. |
3853 |
Attribute (%ls) of row (%ls) in sys.%ls%ls does not have a matching row (%ls) in sys.%ls%ls. |
3854 |
Attribute (%ls) of row (%ls) in sys.%ls%ls has a matching row (%ls) in sys.%ls%ls that is invalid. |
3855 |
Attribute (%ls) exists without a row (%ls) in sys.%ls%ls. |
3856 |
Attribute (%ls) exists but should not for row (%ls) in sys.%ls%ls. |
3857 |
The attribute (%ls) is required but is missing for row (%ls) in sys.%ls%ls. |
3858 |
The attribute (%ls) of row (%ls) in sys.%ls%ls has an invalid value. |
Acción de usuario
Quitar y volver a crear el objeto especificado
Si es posible, quite y vuelva a crear el objeto especificado. Por ejemplo, si el objeto es un procedimiento almacenado o un tipo definido por el usuario, volver a crear el objeto podría resolver el problema.
Restauración mediante la copia de seguridad
Si el problema no está relacionado con el hardware y hay disponible una copia de seguridad limpia conocida, restaure la base de datos a partir de la copia de seguridad. Esta acción solo es aplicable si la copia de seguridad no contiene el error de metadatos.
Exportación de los datos a una nueva base de datos
Si la copia de seguridad también contiene la incoherencia de metadatos, debe crear una nueva base de datos y exportar el contenido de la base de datos existente a la nueva.
DBCC CHECKDB no puede reparar este error
Este error no se puede reparar. Si no puede restaurar la base de datos desde una copia de seguridad, póngase en contacto con el soporte técnico de Microsoft.
No actualice manualmente las tablas del sistema
No realice actualizaciones manuales en las tablas del sistema. SQL Server no admite ningún cambio manual en las bases de datos del sistema. Si actualiza una tabla del sistema de una base de datos de SQL Server, se registran los eventos siguientes:
Cuando se actualiza manualmente una tabla del sistema
Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.
Iniciar una base de datos con una tabla del sistema que se actualizó manualmente
Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.
Ejecute el comando DBCC CHECKDB después de actualizar manualmente una tabla del sistema.
Msg 3859: Warning: The system catalog was updated directly in database ID <id>, most recently at date_time.