我在 SQL Server 2008 中有一个作业设置,当作业失败时, 它会向一位操作员发送一封通知电子邮件。
问题:是否可以为该特定工作设置发送给多个操作员的通知电子邮件?
我相信一个可能的解决方法是为每个给定的严重性为数据库创建大量警报,但我希望有一种更简洁的方法来做到这一点。如果我走这条路,失败的作业可能会触发什么严重错误?(我认为我不需要所有 25 个这样的东西)
这可以通过 sql 命令添加更多操作符来通知失败吗?通过 UI,您似乎只能选择一个操作员。
我在 SQL Server 2008 中有一个作业设置,当作业失败时, 它会向一位操作员发送一封通知电子邮件。
问题:是否可以为该特定工作设置发送给多个操作员的通知电子邮件?
我相信一个可能的解决方法是为每个给定的严重性为数据库创建大量警报,但我希望有一种更简洁的方法来做到这一点。如果我走这条路,失败的作业可能会触发什么严重错误?(我认为我不需要所有 25 个这样的东西)
这可以通过 sql 命令添加更多操作符来通知失败吗?通过 UI,您似乎只能选择一个操作员。
问题:是否可以为该特定工作设置发送给多个操作员的通知电子邮件?
我不相信这是可能的。
当然,查看此表本身中[msdb].[dbo].[sysjobs]
的各个operator_id
列的结构,这将支持 1 到多是不可能的想法。
但是一些替代品
sysoperators
this 的定义对适合的字符串有好处nvarchar(100)
如果打算在作业失败时通知组织中的多人,则可以通过用分号分隔每个邮箱来更改操作员的电子邮件地址以包含多个邮箱。
我假设您通知的操作员称为 JobWatcher:
EXECUTE msdb.dbo.sp_update_operator
@name = N'JobWatcher',
@email_address = N'person1@company.org;person2@company.org';
现在 person1@company.org 和 person2@company.org 将在作业失败时收到邮件。
我用来通知多人的最简单方法"OPERATORS"
是"JOB FAILURE"
:
在SSMS>SQL Server Agent>Operators
创建一个新的OPERATOR
或现有的并添加其他电子邮件地址,以在框中EDIT
分隔。;
"E-mail name:"
最佳做法是在您的邮件服务器上创建一个组,将通知发送到该组,然后控制来自邮件服务器的收件人数量。
所以这就是我想出的一种解决方法,如果目的是如果工作失败应该通知组织中的多个人,并且应该通知不同的多人组来获得成功。
您会注意到步骤 1-3 是计划作业用于执行任务的正常任务。在这些之前可以有尽可能多的步骤,但该过程的最后一步(步骤 3)需要打破“成功”和“失败”以进入单独的电子邮件。此外,所有“失败时”都需要继续发送到您的“失败电子邮件”,如下所示。因此,Failure 组会收到电子邮件,并且历史记录中的作业仍然会失败。
您将在作业步骤的高级选项卡中看到更改“成功操作”和“失败操作”方向的选项。
失败电子邮件步骤 - 常规属性
失败电子邮件步骤 - 高级属性
成功电子邮件步骤 - 常规属性
成功电子邮件步骤 - 高级属性
为其他需要帮助的人。通知多个操作员不同的结果
请使用以下脚本来增加电子邮件地址的字符长度。
USE mdsdb
GO
ALTER TABLE sysoperators
ALTER column email_address NVARCHAR(2000);