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