CORRECTIF : DBCC CHECKTABLE peut échouer si les index sont endommagés

Ancien nº de publication de cet article : F299323
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
N° DE BOGUE : 235391 (SHILOH_BUGS)
Symptômes
Si vous exécutez DBCC CHECKTABLE sur une table dont les index sont endommagés, la vérification peut se terminer avec l'affichage du message d'erreur suivant :
[Microsoft][Pilote ODBC SQL Server][Canaux nommés]ConnectionCheckForData (PeekNamedPipe()).
[Microsoft][Pilote ODBC SQL Server][Canaux nommés]Connexion interrompue.
Résolution
Pour résoudre ce problème, procurez-vous le dernier Service Pack de SQL Server 2000. Pour plus d'informations, consultez l'article suivant dans la Base de connaissances Microsoft :
290211 INF : Procédures pour obtenir le dernier Service Pack de SQL Server 2000
Contournement
  1. Créez le script pour les objets de base de données. Par exemple, effectuez une copie en bloc (bcp) sortante et une copie en bloc entrante des données dans une nouvelle base de données.
  2. Supprimez toutes les statistiques créées automatiquement.
Statut
Microsoft a confirmé l'existence de ce problème dans SQL Server 2000. Ce problème a été corrigé dans le Service Pack 1 pour SQL Server 2000.
Plus d'informations
Dans les versions antérieures à SQL Server 2000 Service Pack 1 (SP1), le texte suivant apparaît dans le journal des erreurs (lorsque la connexion est interrompue) :
Extrait du vidage de la pile77F810B5 Module(ntdll+000010B5) (NtGetContextThread+0000000B) 0092569E Module(sqlservr+0052569E) (utassert_fail(enum UTASSERT_TYPE,char const *,char const *,int,char const *,...)+000002E9)0083A351 Module(sqlservr+0043A351) (LatchBase::Release(enum LatchBase::LATCH_TYPE)+00000039) 008E0365 Module(sqlservr+004E0365) (CheckResultSet::Set(class PageId const &,int,unsigned short,int,unsigned short,class PageId const &,int,int,int,int,long,int,unsigned short const *,int,int const * const,short,int,unsigned char const *,int,int)+000004 77E8314D Module(KERNEL32+0000314D) (SetEvent+0000000C)-------------------------------------------------------------------------------2001-05-21 16:09:26.17 spid51    Assertion SQL Server : Fichier :<latch.cpp>, ligne=799 Échec d'assertion = 'type > NL && type < LASTLATCH'.2001-05-21 16:09:26.26 spid51    Erreur : 3624, Gravité : 20, État : 1.

Dans SQL Server 2000 SP1, l'erreur doit apparaître sous la forme suivante :
Serveur : Msg 8929, Niveau 16, État 1, Ligne 1
Objet ID = 1549468469 : Erreurs trouvées dans le texte ID = 105872687104 possédé par l'enregistrement de données identifié par RID = (1:359718:4) OBJECTID1 = 1 et OBJECTVALUE1 = 'FUNCLIB_EN ' et OBJECTID2 = 2 et OBJECTVALUE2 = 'EXPL_BOM_SQL ' et OBJECTID3 = 12 et OBJECTVALUE3 = 'FieldF.

Serveur : Msg 8965, Niveau 16, État 1, Ligne 1
Erreur de table : Objet ID = 1549468469. Le noeud text, ntext, ou image à la page (1:362025), slot 1, texte ID = 105872687104 est référencé par la page (1:183752), slot 8, mais n'a pas été vu à l'analyse.
Résultats DBCC pour 'PSPCMPROG'.
Il y a 44936 lignes dans 1893 pages pour l'objet 'PSPCMPROG'.
CHECKTABLE a trouvé 0 erreurs d'allocation et 2 erreurs de cohérence dans la table 'PSPCMPROG' (objet ID = 1549468469).
repair_allow_data_loss est le minimum de niveau de réparation pour les erreurs trouvées par DBCC CHECKTABLE (xyz.dbo.PSPCMPROG).
REMARQUE : l'exécution de NOINDEX n'entraîne pas l'apparition de l'erreur ni l'interruption de la connexion.
DBCC CHECKTABLE statistics index ConnectionCheckForData PeekNamedPipe
Propriétés

ID d'article : 299323 - Dernière mise à jour : 01/16/2015 22:39:08 - Révision : 3.1

  • Microsoft SQL Server 2000 Standard
  • kbnosurvey kbarchive kbbug kbfix kbsqlserv2000bug kbsqlserv2000sp1fix KB299323
Commentaires