我正在尝试编写一个SQL查询,该查询告诉我SQL作业是否已根据其计划运行。例如,如果一项工作计划在中午12:00运行,而我们是在下午12:05而且仍然没有运行,我想知道这一点。检测到这种情况的最佳方法是什么?
过去我们有SQL作业定期运行而SQL Server没有运行它们。为了防止这种情况,我们希望针对SQL Server 2008 R2运行查询并检查作业是否运行,然后在未运行时触发警报。
感谢您的帮助!
答案 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
默认情况下,每个作业在执行时都应具有历史记录。