如何监视触发后运行的SQL Server代理作业

时间:2014-12-03 18:57:41

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

我正在运行SQL Server 2008,我有3个代理作业设置为一个接一个地运行,因为第二个成功取决于第一个,等等。

我拥有的其他所有工作都是独立的,我使用包含MSDB..sysjobhistory run_status字段的脚本进行监控。

我想知道是否有办法专门找到从未在特定日期开始的所有工作。我知道我可以从另一个方面考虑问题,并说如果工作1失败,工作2就不可能运行;但是,我正在寻找一个更通用的解决方案,所以如果我需要创建其他类似链接的作业,我将不必在我的夜间报告中硬编码更多逻辑。

欢迎任何建议!

1 个答案:

答案 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)