35

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

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

我相信一个可能的解决方法是为每个给定的严重性为数据库创建大量警报,但我希望有一种更简洁的方法来做到这一点。如果我走这条路,失败的作业可能会触发什么严重错误?(我认为我不需要所有 25 个这样的东西)

这可以通过 sql 命令添加更多操作符来通知失败吗?通过 UI,您似乎只能选择一个操作员。

4

6 回答 6

40

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

我不相信这是可能的。

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

但是一些替代品

  1. 您可以使用以分号分隔的电子邮件地址列表创建一个新的运算符。查看sysoperatorsthis 的定义对适合的字符串有好处nvarchar(100)
  2. 如果你需要超过这个,你可能会在交换或其他什么地方建立一个电子邮件通讯组。
于 2011-09-15T13:47:57.210 回答
32

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

我假设您通知的操作员称为 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 将在作业失败时收到邮件。

于 2012-09-20T15:59:47.557 回答
31

我用来通知多人的最简单方法"OPERATORS""JOB FAILURE"

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

于 2013-12-16T15:51:34.807 回答
13

最佳做法是在您的邮件服务器上创建一个组,将通知发送到该组,然后控制来自邮件服务器的收件人数量。

于 2013-09-11T18:27:26.077 回答
11

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

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

1.1

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

2

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

3

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

4

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

5

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

6

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

于 2016-07-09T21:33:03.163 回答
5

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

于 2018-06-02T12:43:41.390 回答