DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 2787112 - Dernière mise à jour: lundi 4 février 2013 - Version: 3.0

 

Sommaire

Symptômes

Vous rencontrez l'un des problèmes suivants dans Microsoft SQL Server.

Problème 1

Supposons que vous créez une incohérence dans les métadonnées du système lorsque vous mettez à jour manuellement les tables système dans une base de données SQL Server. Ensuite, vous essayez d'exécuter une commande DBCC CHECKDB afin d'identifier les incohérences dans les tables de métadonnées système. Dans ce cas, le message d'erreur suivant est renvoyé :
Msg 8992, niveau 16, état 1, ligne 1
Vérifiez le catalogue Msg 3853, état 1: Attribut (referenced_object_id =ID d'objet>, key_index_id =ID d'index>) de ligne (object_id =ID d'objet>) dans sys.foreign_keys n'a pas une ligne correspondante (object_id =ID d'objet>, index_id =ID d'index>) dans sys.indexes.

Problème 2

Lorsque vous mettez à jour les tables système du serveur SQL, vous recevez un message d'avertissement semblable au suivant :
Avertissement: ID de table systèmeID de la table> a été mis à jour directement dans l'ID de base de donnéesID de base de données> et cohérence de cache n'ont pas été maintenue. SQL Server doit être redémarré.
Dans ce cas, si vous exécutez une commande DBCC CHECKDB ou DBCC CHECKCATALOG , le message d'avertissement ainsi que la date et heure de dernière modification des catalogues système sont retournés. En outre, le message d'avertissement suivant est également enregistré dans le journal de SQL Server :
Avertissement : Le catalogue du système a été mis à jour directement dans l'ID de base de donnéesID de base de données>, plus récemment àHeure du journal>.
Remarque : Cette information est stockée dans l'en-tête de la base de données et persiste pendant la durée de vie de la base de données.

Cause

Ce problème se produit car SQL Server ne gère pas les mises à jour manuelles des tables système. Tables système doivent être mis à jour uniquement par le moteur de base de données SQL Server.

Remarque : Vous pouvez afficher les données dans les tables système en utilisant les vues de catalogue système.

Résolution

Pour résoudre ce problème, appliquez l'une des méthodes suivantes.

Méthode 1

Si vous avez une sauvegarde propre de la base de données, restaurez la base de données à partir de la sauvegarde.

Remarque : Cette méthode fonctionne uniquement si la sauvegarde n'a pas d'incohérences dans les métadonnées.

Méthode 2

Si vous ne pouvez pas restaurer la base de données à partir d'une sauvegarde, exporter les données et les objets vers une nouvelle base de données. Ensuite, transférer le contenu de la base de données mis à jour manuellement dans la nouvelle base de données. Remarque Vous ne pouvez pas réparer les incohérences dans les catalogues système en utilisant les options de réparation dans les commandes DBCC CHECKDB . Par conséquent, étant donné que la commande ne peut pas réparer la corruption des métadonnées, la commande ne fournit pas de n'importe quel niveau de réparation recommandé.

Plus d'informations

Pour plus d'informations sur la règle de System Center Advisor qui détecte les modifications apportées aux catalogues système, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2688307  (http://support.microsoft.com/kb/2688307/ ) L'ID d'événement 17659 et l'événement ID 3859 sont consignés lorsque vous mettez à jour les tables système dans une base de données SQL Server
Le tableau suivant répertorie les erreurs qui indiquent des incohérences dans les catalogues système. En règle générale, les erreurs suivantes sont générées avec un code d'erreur « 8992 ».
Réduire ce tableauAgrandir ce tableau
ErreurTexte du message
3851Une ligne non valide (%ls) a été trouvée dans le sys.%ls%ls table système
3852Ligne (%ls) dans sys.%ls%ls n'a pas une ligne correspondante (%ls) dans sys.%ls%ls.
3853Attribut (%ls) de ligne (%ls) dans sys.%ls%ls n'a pas une ligne correspondante (%ls) dans sys.%ls%ls.
3854Attribut (%ls) de ligne (%ls) dans sys.%ls%ls n'a aucune ligne correspondante (%ls) dans sys.%ls%ls n'est pas valide.
3855Attribut (%ls) existe sans une ligne (%ls) dans sys.%ls%ls.
3856Attribut (%ls) existe mais pas pour la ligne (%ls) dans sys.%ls%ls.
3857L'attribut (%ls) est requis mais manquant pour la ligne (%ls) dans sys.%ls%ls.
3858L'attribut (%ls) de ligne (%ls) dans sys.%ls%ls a une valeur non valide.
3859Avertissement : Le catalogue du système a été mis à jour directement dans la base de données ID % d, plus récemment à % S_DATE.
Voici quelques exemples de messages d'erreur que vous pouvez recevoir lorsque vous rencontrez ces problèmes :
Serveur: Msg 2513, niveau 16, état 1, ligne 1
Erreur de table: ID d'objetID d'objet> (objet 'ID d'objet>') ne correspond pas entre « SYSCOLUMNS » et « SYSOBJECTS ».

Msg 3853, niveau 16, état 1, ligne 2
Attribut (object_id =ID d'objet>) de ligne (object_id =ID d'objet>, index_id =ID d'index>) dans sys.indexes ne dispose pas d'une ligne correspondante (object_id =ID d'objet>) dans sys.objects.

Msg 3855, niveau 16, état 1, ligne 2
Attribut (data_space_id = 1) existe sans une ligne (object_id =ID d'objet>, index_id =ID d'index>) dans sys.indexes.

Msg 3852, niveau 16, état 1, ligne 1
Ligne (object_id =ID d'objet>, index_id = 1) de sys.indexes (type = U) n'a pas de ligne correspondante (classe = 0, objid =ID d'objet>, indexid =ID d'index>, rowsetnum = 1) dans sys.sysrowsetrefs.

Msg 3852, niveau 16, état 1, ligne 1
Ligne (object_id =ID d'objet>, index_id = 1) de sys.indexes (type = U) n'a pas de ligne correspondante (classe = 0, objid =ID d'objet>, indexid =ID d'index>, rowsetnum = 1) dans sys.sysrowsetrefs.

Msg 3853, niveau 16, état 1, ligne 1
Attribut (default_object_id =ID d'objet>) de ligne (object_id =ID d'objet>, column_id =ID de colonne>) dans sys.columns n'a pas une ligne correspondante (object_id =ID d'objet>) dans sys.objects.

Msg 8992, niveau 16, état 1, ligne 1
Vérifiez le catalogue Msg 3853, état 1: Attribut (object_id =ID d'objet>) de ligne (object_id =ID d'objet>, column_id =ID de colonne>) dans sys.columns n'a pas une ligne correspondante (object_id =ID d'objet>) dans sys.objects.

Exécution de DBCC terminée. Si DBCC vous a adressé des messages d'erreur, contactez votre administrateur système.
En outre, vous pouvez recevoir un « Msg 211 "message d'erreur semblable au suivant si vous vérifiez la cohérence d'une base de données en exécutant une commande CHECKDB .
Msg 211, niveau 23, état 230, ligne 1
Corruption du schéma possible. Exécutez DBCC CHECKCATALOG.

Msg 0, niveau 20, état 0, ligne 0
Une erreur grave s'est produite sur la commande actuelle. Les résultats, le cas échéant, doivent être ignorés
Ce message d'erreur indique également que les catalogues système contiennent des métadonnées incohérentes.

Remarque Si vous vérifiez la cohérence d'une base de données qui a été mis à niveau à partir de SQL Server 2000 en exécutant une commande CHECKDB , la commande peut retourner une erreur "8992" code et rapport des incohérences dans les catalogues système. Ce problème se produit car la commande DBCC CHECKDB dans SQL Server 2000 n'inclut pas la fonctionnalité de la commande DBCC CHECKCATALOG . Par conséquent, vous ne souhaitez pas détecter ces problèmes dans SQL Server 2000, sauf si vous avez exécuté la commande DBCC CHECKCATALOG .

Pour plus d'informations sur l'utilisation de la commande DBCC CHECKDB , accédez au site Web Microsoft suivant :
Informations générales sur la commande DBCC CHECKDB (http://msdn.microsoft.com/en-us/library/ms176064(SQL.90).aspx)

Références

Pour plus d'informations sur les problèmes qui peuvent se produire lorsqu'une table système de SQL Server est mis à jour manuellement, cliquez sur le numéro de l'article pour afficher l'article correspondant dans la Base de connaissances Microsoft :

2688307  (http://support.microsoft.com/kb/2688307/ ) L'ID d'événement 17659 et l'événement ID 3859 sont consignés lorsque vous mettez à jour les tables système dans une base de données SQL Server



Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Édition Entreprise
  • Microsoft SQL Server 2000 Édition Développeur
  • Microsoft SQL Server 2000 Standard
  • 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
Mots-clés : 
kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB2787112 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 2787112  (http://support.microsoft.com/kb/2787112/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store