使用Query停止并重新启动数据库作业

时间:2014-12-29 19:02:34

标签: sql-server database jobs job-scheduling

我正在寻找一种方法来阻止正在运行的作业运行一段时间然后重新启动。

我已经阅读了sp_stop_job,根据我的理解,这将在它正在运行的当前步骤完成后停止作业。
我无法使用它,因为作业通常会卡在一个步骤上,需要停止并重新启动然后才能完成。

我已经有一份运行的作业,并为运行时间超过预期的作业发出警报,我只需要一种方法来停止并重新启动一个很可能无法完成当前步骤的特定作业。

使用SQL Server 2014 Management Studio

感谢
史蒂芬

1 个答案:

答案 0 :(得分:0)

SELECT 
    p.spid,
    j.name AS job_name,
    ja.start_execution_date    
FROM msdb.dbo.sysjobactivity ja
JOIN msdb.dbo.sysjobs j 
ON ja.job_id = j.job_id
JOIN master.dbo.sysprocesses p
ON master.dbo.fn_varbintohexstr(convert(varbinary(16), j.job_id)) COLLATE Latin1_General_CI_AI = 
    substring(replace(program_name, 'SQLAgent - TSQL JobStep (Job ', ''), 1, 34)
    WHERE ja.session_id = (SELECT TOP 1 session_id FROM msdb.dbo.syssessions ORDER BY agent_start_date DESC)
AND start_execution_date is not null
AND stop_execution_date is null;