6

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

过去我们有 SQL 作业要定期运行,而 SQL Server 没有运行它们。为防止这种情况发生,我们希望对 SQL Server 2008 R2 运行查询并检查作业是否运行,如果未运行则触发警报。

谢谢您的帮助!

4

3 回答 3

1

您可以尝试未记录的程序

sys.xp_sqlagent_enum_jobs

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

于 2013-02-11T19:43:59.497 回答
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 Books Online http://msdn.microsoft.com/en-us/library/ms174997.aspx

运行状态

作业执行状态:

0 = 失败

1 = 成功

2 = 重试

3 = 取消

于 2013-02-11T19:47:51.717 回答
0

更好地了解哪些工作没有历史。尝试运行此查询。

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

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

于 2017-05-22T15:44:17.737 回答