如何确定调度的sql作业是否未运行

时间:2013-10-03 15:03:04

标签: sql sql-server

假设我有以下情况: 在SQL Server代理中,有一个计划的作业每天早上6点运行,并且每天都能正常运行。有一天,服务器在凌晨5点到早上8点失败,但是当服务器再次启动时,比计划运行的作业晚2小时。

如何检查作业应该先前运行并指出某种“错过的时间表”状态?

方法: 运行EXEC MSDB.DBO.SP_GET_COMPOSITE_JOB_INFO @job_id并检查last_run_time& last_run_time中存在[msdb].[dbo].[sysjobhistory],如果它不存在,则表示作业已安排但未运行。这种方法是否正确?

有任何建议/意见吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我只是试图想象这个 - 必须已经解决问题了。似乎并不像人们想象的那样普遍存在需求。无论如何,当我找到下面的内容时,我正准备开始编写自己的支票。它似乎有效,因为它抓住了我希望它在我的服务器上找到的工作。

你的方法的问题是,如果它是一个相当快速的重复工作,或者它每天都会运行,但是在星期六跳过,你在周一检查。在我看来这样做是正确的,你需要进入频率并建立一个应该运行的时间表,然后检查历史记录并查看它是否运行。以下内容很长,需要时间才能理解,但似乎确实如此。

http://www.nuronconsulting.com/TemplateScripts_SQL_Agent_JobsJobScript_FindMissedJobs_sql.aspx