我们的第 3 方生产系统之一进行了重大升级,使用 sp_whoisactive 我现在看到很多查询 - 1 个事务深度 - 阻止了我读取 dm_db_missing_index_details 的任何尝试。
我已经尝试设置事务隔离级别并使用 NOLOCK,但 SQL 只是在我面前笑了。
Hannah Vernon 能够在这里复制这种行为。
有谁知道如何解决这个问题?
上周我们遇到了一些奇怪的系统阻塞,Redgate Intellisense 是阻塞链的一部分,是否还有其他 DMV 也有同样的问题?
系统表和 DMV 始终以 READ COMMITTED 隔离级别访问。
在 Hannah Vernon 的示例中,阻塞会话在事务中运行了 DDL,预计会阻塞 dm_db_missing_index_details,因为其他会话无法读取已创建但未提交的索引。
因此,请检查您的阻塞会话是否也创建/删除/更改了表或索引。可能它们也被阻止了,这才是真正的问题。