我正在运行SQL Server 2008,我有3个代理作业设置为一个接一个地运行,因为第二个成功取决于第一个,等等。
我拥有的其他所有工作都是独立的,我使用包含MSDB..sysjobhistory run_status
字段的脚本进行监控。
我想知道是否有办法专门找到从未在特定日期开始的所有工作。我知道我可以从另一个方面考虑问题,并说如果工作1失败,工作2就不可能运行;但是,我正在寻找一个更通用的解决方案,所以如果我需要创建其他类似链接的作业,我将不必在我的夜间报告中硬编码更多逻辑。
欢迎任何建议!
答案 0 :(得分:0)
MSDB..sysjobservers
表为您服务器中的每个代理作业保存一条记录,并包含字段last_run_date
,可以很容易地判断哪些作业在过去24小时内未运行。我的查询看起来像这样
SELECT A.name AS [Name]
,@@servername AS [Server]
,'Yes' AS [Critical]
FROM MSDB.dbo.sysjobs A
INNER JOIN MSDB.dbo.sysjobservers B ON A.job_id = B.job_id
WHERE A.name LIKE '2%SPRING%'
AND DATEDIFF(DAY, CONVERT(DATETIME, CONVERT(CHAR(8),B.last_run_date)), GETDATE( )) > 1)