J'ai vu plusieurs personnes appeler SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
avant de lire les DMV du système. Y a-t-il jamais une raison de le faire, en supposant que vous ne mélangez pas les appels aux DMV et aux tables dans la même transaction?
sql-server
dmv
James L
la source
la source
sys.dm_exec_query_stats
àsys.dm_exec_sql_text
etsys.dm_exec_query_plan
.Réponses:
Comme l'un des gars écrit des requêtes DMV de démonstration de cette façon, je vais vous expliquer pourquoi.
Est-ce important si vous interrogez uniquement des DMV? Non. Mais tôt ou tard, vous allez prendre l'un de vos scripts DMV et clouer sur une jointure à sys.databases ou sys.tables ou à tout autre objet système afin d'obtenir plus d'informations sur ce que vous regardez. Si vous n'y avez pas lu sans engagement, vous pouvez être bloqué par d'autres requêtes et bloquer d'autres requêtes. J'ai été brûlé par cela à plusieurs reprises, donc j'utilise par défaut READ UNCOMMITTED chaque fois que je fais un travail de diagnostic.
la source
OBJECT_ID()
,SCHEMA_NAME()
, etc.Je ne vois pas que cela fasse une différence.
Si j'essaye ce qui suit et compare la sortie de verrouillage pour les deux niveaux d'isolement dans winmerge, ils sont exactement les mêmes (et même le mettre en place
SERIALIZABLE
ne change pas la sortie).la source