Le verrouillage est la technique de base pour assurer les concurrences d'accès aux ressources.
On peut observer les verrous posés lors des manipulations de données à l'aide de la procédure stockée sp_lock. De même on peut savoir qui utilise quoi à l'aide de la procédure stockée sp_who.
SQL Server pose en principe les bons verrous lors des requêtes. Mais il peut arriver que l'on souhaite :
soit se débarrasser des contraintes de verrouillage, notamment pour faire du "dirty read" (lecture seule)
soit poser des verrous plus contraignant pour s'assurer du traitement
Dans les deux cas il faut compléter les ordre SQL par une description des verrous attendus.
Voici les paramètres de verrouillage que l'on peut spécifier :
Verrou
NOLOCK aucun verrou
HOLDLOCK maintient du verrou jusqu'à la fin de la transaction
UPDLOCK pose un verrou de mise à jour au lieu d'un verrou partagé
PAGLOCK force la pose d'un verrou de page
TABLOCK force un verrou partagé sur la table
TABLOCKX force un verrou exclusif sur la table pendant toute la durée de la transaction
Ces paramètres se précisent dans un ordre SQL après le nom de la table et le mot clef WITH en utilisant le parenthèsage.
Partager