Tra*_*per 1 process sql-server sql-server-2008-r2 blocking
我和我的团队有一个问题,我们需要能够识别阻塞其他进程并杀死它们的进程。有大量脚本可免费用于执行这些操作。我们尝试了各种方法并仔细检查了代码。(如果您是发布了这些查询之一的人,谢谢!)
在我进一步讨论之前,让我告诉您这是针对我们无法修改的供应商应用程序。供应商也不愿意花时间找出进程被阻塞的原因。此时我们唯一的选择是终止长时间运行的进程(如供应商支持所建议的那样)。在终止这些进程之前,我们确实检查了正在运行的查询,但在 99.9% 的情况下,它显示为FETCH API_CURSOR00000000000A7E1F
,这告诉我们什么都没有。
到目前为止,这一直是一个手动过程。现在,我们希望自动杀死这些长时间运行的阻塞进程,而不是有人手动杀死它们。
我们想在将它投入生产之前测试这个脚本。我们需要一些帮助来创建一个有意创建阻塞进程的脚本。我们已经尝试在 TEST 环境中使用此应用程序,但不幸的是,我们没有成功复制阻塞进程。
提前感谢你的帮助!
BEGIN TRANSACTION
SELECT * FROM YourTable WITH (TABLOCKX, HOLDLOCK)
WAITFOR DELAY '00:05:00' -- 5 minutes
ROLLBACK TRANSACTION
Run Code Online (Sandbox Code Playgroud)
然后在另一个查询窗口中:
SELECT * FROM YourTable
Run Code Online (Sandbox Code Playgroud)