alex Asked: 2010-01-16 13:18:25 +0800 CST2010-01-16 13:18:25 +0800 CST 2010-01-16 13:18:25 +0800 CST SQL 维护计划 - 失败时发送电子邮件 772 我的 SQL 2008 机器上有一个维护计划——我希望它在(或如果)失败时发送一个电子邮件地址。我已经设置了数据库邮件,并且可以发送测试电子邮件.. 我怎样才能做到这一点? sql-server maintenance 3 个回答 Voted Best Answer jscott 2010-01-16T13:24:51+08:002010-01-16T13:24:51+08:00 配置 SQL Server 代理以使用数据库邮件 创建操作员邮件、寻呼机、营业时间等。 配置维护计划以根据退出条件向适当的操作员发送电子邮件。 http://msdn.microsoft.com/en-us/library/ms186358.aspx http://technet.microsoft.com/en-us/library/ms175962.aspx squillman 2010-01-16T13:22:48+08:002010-01-16T13:22:48+08:00 将执行 SQL 任务添加到您的维护计划中,该任务调用 sp_send_dbmail 并将您的任何其他任务的故障路由连接到此任务。 Sean 2016-05-17T06:44:14+08:002016-05-17T06:44:14+08:00 我们添加了“执行 T-SQL 语句任务”,它调用存储过程,以维护计划的名称作为参数: EXEC server.schema.SP_SENDALERT 'plan.subplan'; 在该存储过程中,我们向 SYSJOBS 和 SYSJOBHISTORY 查询计划以获取最后一次“失败”的消息,然后我们将其作为 send_dbmail 的一部分发送给“IT Support”(由循环的过程驱动)通过 MESSAGING 表中未发送的消息),类似于以下内容: 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
http://msdn.microsoft.com/en-us/library/ms186358.aspx
http://technet.microsoft.com/en-us/library/ms175962.aspx
将执行 SQL 任务添加到您的维护计划中,该任务调用 sp_send_dbmail 并将您的任何其他任务的故障路由连接到此任务。
我们添加了“执行 T-SQL 语句任务”,它调用存储过程,以维护计划的名称作为参数:
在该存储过程中,我们向 SYSJOBS 和 SYSJOBHISTORY 查询计划以获取最后一次“失败”的消息,然后我们将其作为 send_dbmail 的一部分发送给“IT Support”(由循环的过程驱动)通过 MESSAGING 表中未发送的消息),类似于以下内容: