目前在我的数据库服务器中速度太慢了。跑步,
EXEC sp_WhoIsActive
@find_block_leaders = 1,
@sort_order = '[blocked_session_count] DESC'
有时我们会遇到错误,
Msg 530, Level 16, State 1, Procedure sp_WhoIsActive, Line 4316 [Batch Start Line 17]
The statement terminated. The maximum recursion 100 has been exhausted before statement completion.
并且当它运行时,blocked_session_count 到更高的数字但blocking_session_id 为NULL。有东西阻塞,我无法找到它。
也在奔跑,
SELECT COUNT(*),log_reuse_wait_desc FROM master.sys.databases group by log_reuse_wait_desc
返回 | 60 | 日志备份|
当我进行故障转移时,它开始工作,但我无法继续进行故障转移。
引导阻塞器通常不会被阻塞——它们导致阻塞是因为它们运行了很长时间等待其他东西,或者休眠并等待另一条指令。在那段时间里,他们拿着锁。请注意,锁等待来自阻塞,而不是锁被占用。
WhoIsActive 仅命令(在您的场景中)哪些会话在其下具有最多被阻止的会话。它们可能完全不相关。您可能正在寻找的是可以通过阻止链向您展示主要阻止者的东西,然后是他们所有被阻止的会话。
一些有用的脚本在这里: