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

Traductions disponibles Traductions disponibles
Numéro d'article: 2448971 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

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 :
Informations générales sur l'escalade de verrou
Pour déterminer si les verrous d'une table sont transmis, exécutez les instructions Transact-SQL suivantes :
USE tempdb
GO

CREATE TABLE x 
(
i INT NOT NULL PRIMARY KEY
)
GO

BEGIN TRAN
INSERT x
SELECT TOP (40000)
ROW_NUMBER() OVER 
(
ORDER BY (SELECT NULL)
) AS r
FROM 
master..spt_values a, 
master..spt_values b
ORDER BY
r

SELECT
COUNT(*)
FROM sys.dm_tran_locks
WHERE 
request_session_id = @@SPID 
ROLLBACK
GO

DROP 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.


Propriétés

Numéro d'article: 2448971 - Dernière mise à jour: vendredi 22 avril 2011 - Version: 3.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2448971 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: 2448971
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