Sql server 2008 SQL Server Agent 2008中未启动作业的通知

Sql server 2008 SQL Server Agent 2008中未启动作业的通知,sql-server-2008,Sql Server 2008,我们可以发送有关作业失败/成功的通知,但如果作业未在预定时间启动,我们是否可以创建一个脚本,向我的邮箱发送通知,说明作业未启动?根据,以下是唯一可以通知的情况。所以,作业未开始甚至不在列表中;这意味着您不能为此设置通知 但我的想法是,如果你知道一天内你应该收到N个作业的N封电子邮件通知,你可以检查一下,找出哪个作业没有运行 作业成功时,在作业成功完成时通知操作员 当作业未成功完成时,作业未能通知操作员 作业完成时,通知操作员,无论完成状态如何 没有简单的方法可以做到这一点,但您可以查询作业历史记

我们可以发送有关作业失败/成功的通知,但如果作业未在预定时间启动,我们是否可以创建一个脚本,向我的邮箱发送通知,说明作业未启动?

根据,以下是唯一可以通知的情况。所以,作业未开始甚至不在列表中;这意味着您不能为此设置通知

但我的想法是,如果你知道一天内你应该收到N个作业的N封电子邮件通知,你可以检查一下,找出哪个作业没有运行

作业成功时,在作业成功完成时通知操作员

当作业未成功完成时,作业未能通知操作员

作业完成时,通知操作员,无论完成状态如何

没有简单的方法可以做到这一点,但您可以查询作业历史记录表,以检查是否记录了作业开始时间。如果没有,您可以使用If表达式向您发送电子邮件


谢谢。

谢谢老板……不过我有个问题。要运行此查询,我是否需要在SQL Server Agent中计划新作业,或者我可以将此查询作为新步骤放置在现有作业本身中。如果作业未启动,则不会执行任何步骤。这将需要进入一个单独的工作,你可以让它检查每15分钟。你可以进行额外的检查,看看是否有1。已经通知你了,2。如果计划时间尚未过去,则忽略。利用T-SQL的动态功能,这一切都非常容易实现。
SELECT DISTINCT
 J.NAME AS 'JOBNAME',
 MSDB.DBO.AGENT_DATETIME(RUN_DATE, RUN_TIME) AS 'RUNDATETIME'
INTO #TEMP
FROM MSDB.DBO.SYSJOBS J 
INNER JOIN MSDB.DBO.SYSJOBHISTORY H 
 ON J.JOB_ID = H.JOB_ID 
WHERE J.ENABLED = 1  --ONLY ENABLED JOBS
ORDER BY JOBNAME, RUNDATETIME DESC

IF NOT EXISTS (
    SELECT * FROM #TEMP
    WHERE JOBNNAME = 'JOBNAME'
    AND RUNDATETIME = 'RUNDATETIME')
        BEGIN

            SEND AN EMAIL

        END