SQL Server代理作业失败时通知多个操作员

时间:2011-09-15 13:22:57

标签: sql-server sql-server-2008 alert sql-server-agent

我在SQL Server 2008中有一个作业设置,当作业失败时,它会向一个操作员发送通知电子邮件。

问题:是否可以设置发送给该特定作业的多个运营商的通知电子邮件?

我认为可能的解决方法是为每个给定的严重性为数据库创建大量警报,但我希望有更简洁的方法来执行此操作。如果我要走这条路线,失败的工作可能会引发哪些严重性错误? (我认为我不会要求所有25个这样的东西)

这可以通过sql命令完成添加更多运算符以通知失败吗?通过UI,您只能选择一个单独的运算符。

5 个答案:

答案 0 :(得分:31)

  

问题:是否可以设置针对该特定作业发送给多个运营商的通知电子邮件?

我不相信这是可能的。

当然,查看[msdb].[dbo].[sysjobs]各个operator_id列的结构在本表中,这将支持1到多个不可能的想法。

但有些替代方案

  1. 您可以使用半冒号分隔的电子邮件地址列表创建一个新运算符。查看sysoperators的定义,这适用于适合nvarchar(100)
  2. 的字符串
  3. 如果您需要超过该数量,您可以在交换机上设置电子邮件分发组或其他任何内容。

答案 1 :(得分:27)

如果目的是在作业失败时通知组织中的多个人,则可以通过用分号分隔每个邮箱来更改运营商的电子邮件地址以包含多个邮箱。

我假设您的通知运营商名为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会在作业失败时收到邮件。

答案 2 :(得分:20)

我用来通知"OPERATORS"上多个"JOB FAILURE"的最简单方法是:

SSMS>SQL Server Agent>Operators中创建新的OPERATOREDIT现有内容,并在;框中添加"E-mail name:"分隔的其他电子邮件地址。

答案 3 :(得分:2)

所以这就是我想出的解决方法,如果意图是,如果一个工作失败,应该通知组织中的多个人,并且不同组的多个人会成功。

您会注意到步骤1-3是计划作业用于执行任务的正常任务。在这些步骤之前可以根据需要执行尽可能多的步骤,但是该过程的最后一步(步骤3)需要打破“成功”和“失败”以进入单独的电子邮件。此外,所有“失败”都需要继续您的“失败电子邮件”,如下所示。因此,失败小组会收到电子邮件,并且作业仍然会因历史记录而失败。

1.1

您将看到在“作业”步骤的“高级”选项卡中更改“成功操作”和“失败时操作”方向的选项。

2

失败电子邮件步骤 - 一般属性

3

失败电子邮件步骤 - 促销属性

4

成功电子邮件步骤 - 一般属性

5

成功电子邮件步骤 - 促销属性

6

对于其他需要帮助的人。 Notify multiple operators with difference results

答案 4 :(得分:0)

请使用以下脚本增加电子邮件地址的字符长度。 USE mdsdb GO ALTER TABLE sysoperators ALTER column email_address NVARCHAR(2000);