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

Mik*_*ike 30 sql-server alert sql-server-agent sql-server-2008

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

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

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

这可以通过sql命令来添加更多运算符来通知失败吗?通过UI,您只能选择单个运算符.

Mar*_*ith 33

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

我不相信这是可能的.

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

但一些替代品

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


Iai*_*der 28

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

我假设您的通知运营商名为JobWatcher:

EXECUTE msdb.dbo.sp_update_operator
  @name = N'JobWatcher',
  @email_address = N'person1@company.org;person2@company.org';
Run Code Online (Sandbox Code Playgroud)

现在person1@company.org和person2@company.org将在作业失败时收到邮件.

  • 这是正确的,虽然有人已经声明该字段只允许100个字符很快填满多个地址. (4认同)
  • 100个字符的问题的一个令人讨厌的副产品是它允许您放置100个以上的字符,但是在您单击OK后将其切断! (2认同)

小智 24

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

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


小智 11

最佳做法是在邮件服务器上创建组,将通知发送到组,然后控制邮件服务器中的收件人数.


dba*_*ker 11

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

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

1.1

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

2

失败电子邮件步骤 - 常规属性

3

失败电子邮件步骤 - 高级属性

4

成功电子邮件步骤 - 常规属性

5

成功电子邮件步骤 - 高级属性

6

对于其他需要帮助的人。通知不同结果的多个操作员


小智 5

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

  • 即使扩展“email_address”列的列宽以容纳多个电子邮件地址(如果总长度> 100 个字符),也可以使用: USE msdb; 更改表系统操作符;更改列 email_address NVARCHAR(2000); 这使得 SSMS GUI 毫无用处,因为它不会打开“代理作业属性”下的“通知”选项卡/对话框。 (2认同)