He visto a varias personas llamar SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
antes de leer los DMV del sistema. ¿Hay alguna razón para hacer esto, suponiendo que no esté mezclando llamadas a DMV y tablas en la misma transacción?
sql-server
dmv
James L
fuente
fuente
sys.dm_exec_query_stats
asys.dm_exec_sql_text
ysys.dm_exec_query_plan
.Respuestas:
Como uno de los chicos escribe consultas de demostración de DMV de esa manera, explicaré por qué.
¿Importa si solo está consultando DMV? No. Pero tarde o temprano, tomará uno de sus scripts del DMV y agregará una unión a sys.databases o sys.tables o algún otro objeto del sistema para obtener más información sobre lo que está viendo. Si no ha leído sin confirmar allí, puede ser bloqueado por otras consultas y bloquear otras consultas. Eso me ha quemado repetidamente, por lo que solo uso READ UNCOMMITTED de forma predeterminada cada vez que hago algún trabajo de diagnóstico.
fuente
OBJECT_ID()
,SCHEMA_NAME()
, etc.No veo que haga ninguna diferencia.
Si intento lo siguiente y comparo la salida de bloqueo para ambos niveles de aislamiento en winmerge, son exactamente iguales (e incluso ponerlo en marcha
SERIALIZABLE
no cambia la salida).fuente