2010-01-21 3 views
1

Lorsqu'un client SQL émet la commande suivante:mot-clé SQL Server NOLOCK

select * into tbl2 
FROM tbl1 (nolock) 
WHERE DateCreated < '2009/01/01' 

ce que cela signifie que la commande ne se verrouille pas tbl1ouil ne sera pas bloqué par d'autres transactions non validées fait à tbl1?

Mise à jour:

[NOLOCK]: Indique que sale lit sont autorisés. Aucun verrou partagé n'est émis pour empêcher les autres transactions de modifier les données lues par la transaction en cours, et les verrous exclusifs définis par d'autres transactions n'empêchent pas la transaction en cours de lire les données verrouillées. REF: MSDN

Répondre

4

Cela signifie le premier; vous ne sortez pas les verrous et donc le second; vous ne serez pas bloqué par d'autres transactions ouvertes. Voir les documents MSDN sur table hints.

Voici un lien vers les documents MSDN sur transaction isolation levels - peut être utile si vous envisagez d'utiliser NOLOCK. NOLOCK met l'instruction SQL au niveau d'isolation en lecture non validée. Si vous avez une transaction multi-instructions, vous pouvez définir le niveau d'isolation à un niveau inférieur pour la majorité de la transaction et l'augmenter si nécessaire, plutôt que de l'abaisser uniquement sur une ou plusieurs instructions de la transaction.

2

Les deux. Et il lira également les données non validées provenant d'autres transactions [non validées] (le cas échéant).

Questions connexes