Sql server gère automatiquement le verrouillage. Lorsqu'il juge qu'il y a trop de lignes verrouillées par une màj, il augmente l'étendu d'un verrou jusqu'à verrouiller la table si nécessaire. Plus sql server pose des verrous, plus la consommation de ressource est élevée. C'est pour cela qu'il convertit souvent certains verrous en version plus générale pour bloquer une table au lieu de 100000 lignes de cette même table.
Dans ton cas, tu peux obliger sql server à conserver un verrouillage par ligne en ajout un hint aux commandes update et delete :
UPDATE table WITH (ROWLOCK) set col=X where ....
A ce moment là, sql server ne verrouillle que les lignes. Attention, car si ta requete verrouille bcp de lignes, tu peux rapidement te retrouver avec une machine à genoux, le nb de verrous à gérer étant très important.
pour comprendre un peu mieux les mécanismes de promotion de verrous :
http://technet.microsoft.com/fr-fr/l.../ms184286.aspx
Partager