检测未按计划运行的作业

时间:2013-02-11 19:33:26

标签: sql sql-server sql-server-2008-r2 sql-job

我正在尝试编写一个SQL查询,该查询告诉我SQL作业是否已根据其计划运行。例如,如果一项工作计划在中午12:00运行,而我们是在下午12:05而且仍然没有运行,我想知道这一点。检测到这种情况的最佳方法是什么?

过去我们有SQL作业定期运行而SQL Server没有运行它们。为了防止这种情况,我们希望针对SQL Server 2008 R2运行查询并检查作业是否运行,然后在未运行时触发警报。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您可以尝试未记录的程序

sys.xp_sqlagent_enum_jobs

此过程返回作业上次运行日期和时间。

答案 1 :(得分:1)

此查询将告诉您作业运行详细信息。

Select hist.run_date,hist.run_status,hist.run_time
from msdb..sysjobs jb 
inner join msdb..sysjobhistory hist
on jb.job_id = hist.job_id
where jb.name = 'MyJob'

根据Sql联机丛书 http://msdn.microsoft.com/en-us/library/ms174997.aspx

run_status

作业执行状态:

0 =失败

1 =成功

2 =重试

3 =已取消

答案 2 :(得分:0)

更好地了解哪些工作没有神秘感。尝试运行此查询。

 select name  from msdb.dbo.sysjobs  where job_id not in (select job_id from sdb.dbo.sysjobhistory)  and enabled = 1

默认情况下,每个作业在执行时都应具有历史记录。