Eu já vi várias pessoas ligando SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
antes de ler os DMVs do sistema. Existe alguma razão para fazer isso, supondo que você não esteja misturando chamadas para DMVs e tabelas na mesma transação?
sql-server
dmv
James L
fonte
fonte
sys.dm_exec_query_stats
asys.dm_exec_sql_text
esys.dm_exec_query_plan
.Respostas:
Enquanto um dos caras escreve consultas DMV de demonstração dessa maneira, vou explicar o porquê.
Importa se você está apenas consultando DMVs? Não. Mas, mais cedo ou mais tarde, você pegará um de seus scripts DMV e aderirá a uma associação a sys.databases ou sys.tables ou algum outro objeto do sistema para obter mais informações sobre o que está vendo. Se você ainda não leu a confirmação, pode ser bloqueado por outras consultas e bloquear outras consultas. Fui queimado repetidamente por isso, então só uso LEITURA NÃO COMPROMETIDA por padrão sempre que estou fazendo algum trabalho de diagnóstico.
fonte
OBJECT_ID()
,SCHEMA_NAME()
, etc.Não vejo que isso faça alguma diferença.
Se eu tentar o seguinte e comparar a saída de bloqueio para os dois níveis de isolamento no winmerge, eles são exatamente os mesmos (e até a colocação deles
SERIALIZABLE
não altera a saída).fonte