您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> MSSQL >> 执行特定作业,如何自动kill堵塞的语句

执行特定作业,如何自动kill堵塞的语句(1/2)

来源:网络整理     时间:2017/6/30 0:30:07     关键词:

关于网友提出的“ 执行特定作业,如何自动kill堵塞的语句”问题疑问,本网通过在网上对“ 执行特定作业,如何自动kill堵塞的语句”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 执行特定作业,如何自动kill堵塞的语句
描述:

场景:运行一个重要的JOB(test),有可能被其他进程A,B.C...堵塞,但是需要确保其运行成功,需要强制KILL堵塞的脚本,请详细给出实现语句;
IF EXISTS(查询job(TEST)被A,B,C...堵塞)
begin
kill A,B,C...
end


解决方案1:

本帖最后由 roy_88 于 2017-06-14 16:51:05 编辑

把放在JOB里的T-SQL用到表,在动态视图里查找,条件加上锁类型,满足条件直接KILL掉,再执行的JOB命令
方法可放在一起,也可在JOB里分步执行
满足条件比如架构锁:request_mode=‘Sch-S’ 这样加 解决方案2:

上面方法为有正在运行的JOB影响现有JOB时,可这样用
如果是你现有JOB运行,被其它进程非JOB时用
--用以下方法分析进程,有没有JOB用到的表,有就KILL掉进程
e.g.

USE master
go
select      
    request_session_id as spid,     
    resource_type,     
    db_name(resource_database_id) as dbName,     
    resource_description,     
    resource_associated_entity_id,    
    OBJECT_NAME(resource_associated_entity_id,DB_ID('PayCenter'))  AS TabName,
    request_mode as mode,     
    request_status as Status     
from      
    sys.dm_tran_locks 

相关图片

相关文章