Um dos nossos sistemas de produção de terceiros passou por uma grande atualização e com sp_whoisactive agora estou vendo muitas consultas - 1 transação profunda - que estão bloqueando qualquer uma das minhas tentativas de ler dm_db_missing_index_details.
Eu tentei definir o NÍVEL DE ISOLAMENTO DE TRANSAÇÃO e usar NOLOCK, mas o SQL apenas ri na minha cara.
Hannah Vernon conseguiu replicar esse comportamento aqui .
Alguém sabe como contornar esta questão?
Experimentamos alguns bloqueios estranhos com o sistema na semana passada e o Redgate Intellisense fazia parte da cadeia de bloqueio, existem outros DMVs que também têm o mesmo problema?
As tabelas de sistema e DMVs são sempre acessadas no nível de isolamento READ COMMITTED.
No exemplo de Hannah Vernon, a sessão de bloqueio executou DDL em uma transação, que deve bloquear dm_db_missing_index_details porque os índices criados mas não confirmados não podem ser lidos por outra sessão.
Portanto, verifique se suas sessões de bloqueio também criaram/descartaram/alteraram tabelas ou índices. Pode ser que eles também estejam bloqueados, e esse é o verdadeiro problema.