CORRECTIF : requête avec niveau d'isolation transaction défini sur READ UNCOMMITTED échoue avec l'erreur 601

Traductions disponibles Traductions disponibles
Numéro d'article: 815008 - Voir les produits auxquels s'applique cet article
BOGUE #: 363988 (SHILOH_BUGS)
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsqu'il exécute une requête avec son niveau d'isolation de transaction défini sur READ UNCOMMITTED, SQL Server 2000 abandonne la requête et renvoie le message d'erreur suivantes :

Serveur: Msg 601, niveau 12, État 3, ligne 14
Impossible de poursuivre l'analyse avec NOLOCK en raison de déplacement de données.

Cause

Ce problème peut se produire lorsqu'une ligne dans une table est supprimée entre l'heure de que SQL Server lit l'emplacement de la ligne d'un index et l'heure que SQL Server extrait la ligne.

Résolution

Informations sur le service pack

Pour résoudre ce problème, procurez-vous le dernier service pack Microsoft SQL Server 2000. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
290211 Comment obtenir le dernier pack de service SQL Server 2000

Informations sur le correctif

La version anglaise de ce correctif dispose les attributs de fichier (ou attributs de fichier version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont exprimées en temps universel coordinated (UTC). Lorsque vous affichez les informations de fichier, il est convertie en heure locale. Pour connaître le décalage entre l'heure UTC et l'heure locale, utilisez l'onglet Fuseau horaire dans l'outil Date et heure du Panneau de configuration.
Date		Time	Version		Size		 File name
-----------------------------------------------------------------------------

07-Feb-2003	16:14			  786,432 bytes  Distmdl.ldf
07-Feb-2003	16:14			2,359,296 bytes  Distmdl.mdf
29-Jan-2003	12:25			      180 bytes  Drop_repl_hotfix.sql
31-Jan-2003	11:02	2000.80.763.0	1,557,052 bytes	 Dtsui.dll     
29-Jan-2003	15:48			  746,470 bytes  Instdist.sql
29-Jan-2003	12:25	                    1,402 bytes  Inst_repl_hotfix.sql
07-Feb-2003	17:10	2000.80.765.0      90,692 bytes  Msgprox.dll  
29-Jan-2003	11:48	7.0.9466.0        344,064 bytes  Msvcr70.dll      
29-Jan-2003	11:48	2000.80.722.0      57,904 bytes  Osql.exe         
07-Feb-2003	14:23                   1,065,895 bytes  Replmerg.sql
07-Feb-2003	17:10	2000.80.765.0	  221,768 bytes  Replprov.dll     
07-Feb-2003	17:10	2000.80.765.0     307,784 bytes  Replrec.dll      
29-Jan-2003	15:48		   	1,084,318 bytes  Replsys.sql
29-Jan-2003	11:48	2000.80.534.0	  127,548 bytes  Sqdedev.dll    
07-Feb-2003	17:10	2000.80.765.0	  176,696 bytes  Sqlmap70.dll  
07-Feb-2003	17:10	2000.80.765.0	   57,920 bytes  Sqlrepss.dll    
14-Feb-2003	13:22	2000.80.769.0   7,512,145 bytes  Sqlservr.exe   
29-Jan-2003	11:48	2000.80.194.0     180,290 bytes  Sqlunirl.dll     
07-Feb-2003	17:10	2000.80.765.0      45,644 bytes  Sqlvdi.dll   
07-Feb-2003	17:10	2000.80.765.0      82,492 bytes  Ssnetlib.dll     
				
note En raison des dépendances de fichiers, la fonctionnalité qui contient les fichiers ou correctif plus récent peut également contenir des fichiers supplémentaires.


Statut

Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés dans la section « S'applique à ».Ce problème a été corrigé dans Microsoft SQL Server 2000 Service Pack 4.

Plus d'informations

Après avoir installé le correctif, vous pouvez utiliser indicateur de trace 9134 pour modifier le comportement de SQL Server. Pour activer indicateur de trace 9134 afin qu'elle est activée chaque fois que SQL Server démarre, ajoutez l'indicateur de trace comme paramètre de démarrage de SQL Server. Pour ajouter indicateur de trace 9134 comme un paramètre de démarrage SQL Server, procédez comme suit :
  1. Dans SQL Server Enterprise Manager, cliquez avec le bouton droit sur le serveur exécutant SQL Server, puis cliquez sur Propriétés .
  2. Sous l'onglet Général , cliquez sur démarrage paramètres .
  3. Dans la zone de texte paramètres , tapez -T9134 , cliquez sur Ajouter , puis cliquez sur OK .
  4. Dans le SQL Server Properties(Configure) - < serveur nom >boîte de dialogue, cliquez sur OK .
  5. Redémarrez le service SQL Server pour le nouveau paramètre prenne effet.
En guise d'alternative, vous pouvez exécuter la requête suivante dans Query Analyzer pour activer l'indicateur de trace dynamiquement :
DBCC TRACEON (9134, -1)
Toutefois, si vous n'ajoutez pas indicateur de trace 9134 sous la forme d'un paramètre de démarrage, l'effet de la commande DBCC TRACEON est perdue lors du redémarrage du service SQL Server.

Lorsque l'indicateur de trace 9134 est activée et une ligne est supprimée ou modifiée entre l'heure de que SQL Server lit l'emplacement de la ligne et l'heure qu'il extrait la ligne à une recherche de signet, la requête n'est pas annuler ou revenir erreur 601. En revanche, SQL Server ignore la ligne qui ne peut pas être localisée et qu'il continue à rechercher pour les autres lignes correspondent aux critères de requête. Par conséquent, se poursuit l'exécution de la requête ; toutefois, les résultats que SQL Server renvoie peuvent inclure pas lignes qui ont été supprimés ou déplacés lors de l'exécution de requête.

note La dans cet article et le suivi indicateur s'appliquent uniquement à une requête est exécutée avec le niveau d'isolation de transaction catégorie d'informations sur READ UNCOMMITTED. Les informations ne s'applique pas à une requête qui est exécutée avec l'indicateur d'optimisation NOLOCK. Dans ce cas, le comportement reste inchangé à partir de ce qui est décrit dans la section « Symptômes ».

En outre, l'indicateur de trace n'affecte pas le fait qu'autres incohérences erreurs et les données peuvent se produire lorsque lecture des données non validées. Pour plus d'informations sur les niveaux d'isolement pris en charge par SQL Server et l'effet de chaque niveau d'isolation, consultez la rubrique « verrouillage » dans la documentation en ligne de SQL Server.

Microsoft ne recommande pas l'utilisation de cet indicateur de suivi, sauf si toutes les opérations suivantes s'appliquent :
  • L'application en cours d'utilisation nécessite READ UNCOMMITTED applique un niveau d'isolement.
  • L'application cours d'utilisation a un grand nombre d'erreurs 601.
  • Vous reconnaissez que lorsque vous utilisez l'indicateur de suivi, les lignes qui ont été supprimés ou déplacés lors de l'exécution de requête sont ignorées.
note Avant de pouvoir utiliser le niveau d'isolation READ UNCOMMITTED, vous devez comprendre ses fonctionnalités. Pour plus d'informations sur le niveau d'isolation UNCOMMITTED en lecture, reportez-vous au site de Web MSDN (Microsoft Developer Network) suivant :
http://msdn2.microsoft.com/en-us/library/ms171885.aspx

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
235880 INF: Optimiseur indication NOLOCK ou du niveau d'isolation UNCOMMITTED lecture génère erreur 605
Pour plus d'informations, reportez-vous aux sites adresses de Web MSDN suivantes :
Dépannage erreur 601
http://msdn2.microsoft.com/en-us/library/aa258726(SQL.80).aspx
SET NIVEAU D'ISOLATION DES TRANSACTIONS
http://msdn2.microsoft.com/en-us/library/aa259216(SQL.80).aspx

Propriétés

Numéro d'article: 815008 - Dernière mise à jour: vendredi 2 novembre 2007 - Version: 6.6
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Édition Développeur
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 2000 Édition Entreprise
  • Microsoft SQL Server 2000 Édition Personelle
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Mots-clés : 
kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbbug kberrmsg kbfix KB815008 KbMtfr
Traduction 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: 815008
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.

Envoyer des commentaires

 

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