CORRECTIF : Les verrous d'une table ne sont pas transmis lorsque vous insérez le nombre de lignes dans une table dans SQL Server 2008 ou dans SQL Server 2008 R2

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: 2448971

Symptômes
Considérez le scénario suivant :

  • Vous insérez le nombre de lignes dans une table dans Microsoft SQL Server 2008 ou dans SQL Server 2008 R2 en utilisant l'une des requêtes suivantes :
    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
    Notes
    • Le <target_table></target_table> espace réservé représente le nom de la table cible réelle.
    • Le <predicate></predicate> espace réservé représente le prédicat réel.
    • Le <source_table></source_table> espace réservé représente la table source réelle.
  • Dépassement du seuil d'escalade de verrou de la table.
Dans ce scénario, le moteur de base de données ne pas escalader les verrous de la table.
Cause
Ce problème se produit parce que SQL Server ne compte pas en interne tous les nouveaux verrous qui sont générés par les opérations d'insertion. Par conséquent, le seuil de majoration de verrou ne peut pas déclenché lorsqu'il est requis.
Résolution

Informations de service pack de SQL Server 2008

Pour résoudre ce problème, procurez-vous le dernier service pack de SQL Server 2008.

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
968382 Comment faire pour obtenir le dernier service pack de SQL Server 2008

Informations de service pack pour SQL Server 2008 R2

Pour résoudre ce problème, procurez-vous le dernier service pack pour SQL Server 2008 R2. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2527041Comment faire pour obtenir le dernier service pack pour SQL Server 2008 R2
Statut
Microsoft a confirmé qu'il s'agit d'un problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Ce problème a été corrigé dans SQL Server 2008 Service Pack 2 pour SQL Server 2008.
Ce problème a été corrigé dans SQL Server 2008 R2 Service Pack 1 pour SQL Server 2008 R2.
Plus d'informations
Pour plus d'informations sur l'escalade de verrous, reportez-vous au site Web Microsoft TechNet suivant :
Pour déterminer si les verrous d'une table sont transmis, exécutez les instructions Transact-SQL suivantes :
USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x   
Si les verrous de la table sont transmis, la dernière instruction SELECT renvoie une valeur d'une ou l'autre 1 ou 2. Si les verrous de la table ne sont pas transmis, la dernière instruction SELECT renvoie une valeur d'une ou l'autre 40,066 ou 40,067.


Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 2448971 - Dernière mise à jour : 04/22/2011 17:43:00 - Révision : 3.0

Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard

  • kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2448971 KbMtfr
Commentaires