2010-10-06 13 views
2

Comment rechercher un indicateur de verrouillage de table global par défaut?Indice de verrouillage de table par défaut sur SQL Server 2005/2008


- Questions

  1. Y at-il DMV/DMF (gestion dynamique View/Fonction) qui renvoient ces informations?
  2. Et aussi, existe-t-il un moyen de modifier l'indicateur de verrouillage par défaut?

Actuellement, je suis en ajoutant nolock touche presque partout pour éviter les serrures.
Je souhaite éviter de le faire en modifiant l'indicateur de verrouillage par défaut à nolock afin que les procédures stockées existantes n'aient pas besoin d'être modifiées.

+0

Cela semble très étrange - y a-t-il une erreur dans la conception de la base de données que vous essayez de contourner? – egrunin

+0

J'essaie juste de voir si l'absence de l'indice 'nolock' dans les procédures stockées est la cause de tous les délais d'attente de la requête – Sung

Répondre

3

Je ne suis pas au courant d'un tel paramètre global. À mon humble avis même si cela existe, il peut y avoir peu de justification pour l'utiliser.

Vous pouvez toutefois définir les niveaux d'isolation pour contrôler si les transactions individuelles peuvent lire les modifications apportées aux données effectuées par d'autres transactions. Ceci est effectué via

SET TRANSACTION ISOLATION LEVEL 
4

Il n'y a pas de paramètre global. La valeur par défaut est toujours READ COMMITTED

Il peut être modifié à

NOLOCK partout est tout à fait misguided Et ici aussi:

Edit: Après commentaire à propos de délai d'attente de requête ...

Une requête avec NOLOCK peut encore consommer CPU massive et des ressources IO . Le verrouillage n'est pas un gros problème. Si c'est le cas, alors une autre requête prend trop de temps, consommant probablement des ressources CPU et IO massives ...

+0

+1 Je n'étais pas au courant que NOLOCK pourrait être une mauvaise chose parfois. Laissez-moi vérifier différentes façons de valider où le verrou pourrait se produire. Merci. GBN. – Sung