"Msg 8992" mensaje de error y metadatos incoherentes en los catálogos del sistema de SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 2787112 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Experimenta uno de los siguientes problemas en Microsoft SQL Server.

Problema 1

Suponga que crea una incoherencia en los metadatos del sistema cuando se actualización manualmente las tablas del sistema en una base de datos de SQL Server. A continuación, intenta ejecutar un comando DBCC CHECKDB con el fin de identificar incoherencias en las tablas de metadatos del sistema. En esta situación, se devuelve el mensaje de error siguiente:
Msj 8992, nivel 16, estado 1, línea 1
Compruebe el catálogo Msg 3853, estado 1: Atributo (referenced_object_id =Id. de objeto>, key_index_id =Id. de índice>) de la fila (object_id =Id. de objeto>) en sys.foreign_keys no dispone de una fila coincidente (object_id =Id. de objeto>, index_id =Id. de índice>) en sys.indexes.

Problema 2

Al actualizar las tablas del sistema en el servidor SQL, recibirá un mensaje de advertencia similar al siguiente:
Advertencia: Id. de tabla del sistemaID de tabla> se actualizó directamente en el ID de la base de datosId. de la base de datos> y coherencia de caché no se hayan mantenido. Se debe reiniciar SQL Server.
En esta situación, si ejecuta un comando DBCC CHECKDB o DBCC CHECKCATALOG , se devuelve el mensaje de advertencia junto con la fecha y hora en que se modificó por última vez los catálogos del sistema. Además, el siguiente mensaje de advertencia también se registra en el registro de SQL Server:
Advertencia: El catálogo del sistema se actualizó directamente en el ID de la base de datosId. de la base de datos>, más recientemente en elHora de registro>.
Nota Esta información se almacena en el encabezado de la base de datos y se conserva en la duración de la base de datos.

Causa

Este problema se produce porque SQL Server no admite las actualizaciones manuales en tablas del sistema. Tablas del sistema deben actualizarse sólo por el motor de base de datos de SQL Server.

Nota Puede ver los datos en las tablas del sistema mediante el uso de las vistas de catálogo del sistema.

Solución

Para resolver este problema, utilice uno de los métodos siguientes.

Método 1

Si tiene una copia de seguridad de la base de datos limpia, restaure la base de datos desde la copia de seguridad.

Nota Este método sólo funciona si la copia de seguridad no tiene incoherencias en los metadatos.

Método 2

Si no se puede restaurar la base de datos desde una copia de seguridad, exportar los datos y los objetos a una base de datos. A continuación, transferir el contenido de la base de datos actualiza manualmente a la nueva base de datos. NotaNo puede reparar las incoherencias en los catálogos del sistema mediante el uso de las opciones de reparación en los comandos DBCC CHECKDB . Por lo tanto, ya que el comando no puede reparar los daños de metadatos, el comando no proporciona ningún nivel de reparación recomendados.

Más información

Para obtener más información acerca de la regla de asesor del centro de sistema que detecta las modificaciones que se realizan en los catálogos del sistema, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2688307 Al actualizar tablas del sistema en una base de datos de SQL Server, se registran Id. de suceso 17659 y 3859 de Id.
En la tabla siguiente enumera los errores que indican incoherencias en los catálogos del sistema. Por lo general, los siguientes errores se generan junto con un código de error "8992".
Contraer esta tablaAmpliar esta tabla
ErrorTexto del mensaje
3851Se encontró una fila no válido (% ls) en la sys.%ls%ls tabla sistema
3852Fila (% ls) en sys.%ls%ls no tiene una fila coincidente (% ls) en sys.%ls%ls.
3853Atributo (% ls) de fila (% ls) en sys.%ls%ls no tiene una fila coincidente (% ls) en sys.%ls%ls.
3854Atributo (% ls) de fila (% ls) en sys.%ls%ls tiene una fila coincidente (% ls) en sys.%ls%ls que no es válido.
3855Atributo (% ls) existe sin una fila (% ls) en sys.%ls%ls.
3856Atributo (% ls) existe, pero debe no de fila (% ls) en sys.%ls%ls.
3857El atributo (% ls) es necesario, pero falta para la fila (% ls) en sys.%ls%ls.
3858El atributo (% ls) de fila (% ls) en sys.%ls%ls tiene un valor no válido.
3859Advertencia: El catálogo del sistema se actualizó directamente en la base de datos ID % d, más recientemente en % S_DATE.
Los siguientes son ejemplos de mensajes de error que pueden aparecer cuando experimenta estos problemas:
Servidor: Msg 2513, nivel 16, estado 1, línea 1
Error de tabla: Id. de objetoId. de objeto> (objeto 'Id. de objeto>') no coinciden con 'SYSCOLUMNS' y 'SYSOBJECTS'.

Msj 3853, nivel 16, estado 1, línea 2
Atributo (object_id =Id. de objeto>) de la fila (object_id =Id. de objeto>, index_id =Id. de índice>) en sys.indexes no dispone de una fila coincidente (object_id =Id. de objeto>) en sys.objects.

Msg 3855, nivel 16, estado 1, línea 2
Atributo (data_space_id = 1) existe sin una fila (object_id =Id. de objeto>, index_id =Id. de índice>) en sys.indexes.

Msj 3852, nivel 16, estado 1, línea 1
Fila (object_id =Id. de objeto>, index_id = 1) en sys.indexes (tipo = U) no tiene una fila coincidente (clase = 0, objid =Id. de objeto>, indexid =Id. de índice>, rowsetnum = 1) en sys.sysrowsetrefs.

Msj 3852, nivel 16, estado 1, línea 1
Fila (object_id =Id. de objeto>, index_id = 1) en sys.indexes (tipo = U) no tiene una fila coincidente (clase = 0, objid =Id. de objeto>, indexid =Id. de índice>, rowsetnum = 1) en sys.sysrowsetrefs.

Msj 3853, nivel 16, estado 1, línea 1
Atributo (default_object_id =ID de objeto>) de fila (object_id =Id. de objeto>, column_id =Id. de columna>) en sys.columns no dispone de una fila coincidente (object_id =Id. de objeto>) en sys.objects.

Msj 8992, nivel 16, estado 1, línea 1
Compruebe el catálogo Msg 3853, estado 1: Atributo (object_id =Id. de objeto>) de la fila (object_id =Id. de objeto>, column_id =Id. de columna>) en sys.columns no dispone de una fila coincidente (object_id =Id. de objeto>) en sys.objects.

Ejecución de DBCC completada. Si los mensajes de error de DBCC, póngase en contacto con el administrador del sistema.
Además, puede recibir un "Msg 211" mensaje de error similar al siguiente si comprueba la coherencia de una base de datos mediante la ejecución de un comando CHECKDB .
Msj 211, nivel 23, estado 230, línea 1
El posible esquema esté dañado. Ejecute DBCC CHECKCATALOG.

Msj 0, nivel 20, estado 0, línea 0
Se ha producido un error grave en el comando actual. Los resultados, si los hay, deben descartarse
Este mensaje de error también indica que los catálogos del sistema contienen metadatos incoherentes.

NotaSi comprueba la coherencia de una base de datos que se ha actualizado desde SQL Server 2000 mediante la ejecución de un comando CHECKDB , el comando puede devolver un error de "8992" código y el informe de incoherencias en los catálogos del sistema. Este comportamiento se produce porque el comando DBCC CHECKDB en SQL Server 2000 no incluye la funcionalidad del comando DBCC CHECKCATALOG . Por lo tanto, no podría detectar estos problemas en SQL Server 2000 a menos que se ha ejecutado el comando DBCC CHECKCATALOG .

Para obtener más información acerca de cómo utilizar el comando DBCC CHECKDB , visite el sitio Web de Microsoft siguiente:
Información general acerca del comando DBCC CHECKDB

Referencias

Para obtener más información acerca de los problemas que pueden producirse cuando una tabla del sistema de SQL Server se actualiza manualmente, haga clic en el número de artículo para verlo en Microsoft Knowledge Base:

2688307 Al actualizar tablas del sistema en una base de datos de SQL Server, se registran Id. de suceso 17659 y 3859 de Id.


Propiedades

Id. de artículo: 2787112 - Última revisión: lunes, 04 de febrero de 2013 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Standard
Palabras clave: 
kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB2787112 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 2787112

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com