我有一个维护计划在我的SQL 2008框 – 我想它发送一个电子邮件地址时(或如果)失败。 我build立了数据库邮件,并可以发送testing邮件。
我怎样才能做到这一点?
将一个执行SQL任务添加到您的维护计划中,调用sp_send_dbmail并将任何其他任务的故障路由连接到此任务。
我们添加了“执行T-SQL语句任务”,调用一个存储过程,维护计划的名称作为参数:
EXEC server.schema.SP_SENDALERT 'plan.subplan';
在那个存储过程中,我们回到SYSJOBS和SYSJOBHISTORY查询计划,以获得最后一个“失败”的消息,然后我们发送到“IT支持”作为send_dbmail的一部分(这是由一个过程循环通过消息传递表中的未发送消息),按照如下方式:
CREATE PROCEDURE SP_SENDALERT (@plan VARCHAR(MAX)) AS BEGIN DECLARE @error VARCHAR(MAX) SELECT TOP 1 @error = SJH.[MESSAGE]FROM MSDB.DBO.SYSJOBS SJ LEFT JOIN MSDB.DBO.SYSJOBHISTORY SJH ON SJ.JOB_ID = SJH.JOB_ID WHERE SJ.ENABLED = 1 AND SJH.RUN_STATUS = 0 AND SJ.[NAME] = @plan ORDER BY SJH.RUN_DATE, RUN_TIME DESC INSERT INTO database.schema.MESSAGING (MESSAGE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, RECIPIENTS, RECORD_ADDED) VALUES (1, 'ERROR: ' + @plan, @error, '[email protected]', GETDATE()) END