我在SQL Server 2008中设置了一个作业,当作业失败时向一个操作员发送通知电子邮件。
问题:能否设置将通知电子邮件发送给多个操作员以针对这个特定的作业?
我认为这个问题的一个可能的解决方法是为数据库创建许多警报,针对每个给定的严重性级别,但我希望有更简洁的方法来完成。如果我选择这种方法,哪些严重性错误可能会由于作业失败而被触发?(我认为像这样的情况不需要所有的25个)
是否可以通过SQL命令来添加更多需要在作业失败时通知的操作员?从UI中似乎只能选择一个操作员。
我在SQL Server 2008中设置了一个作业,当作业失败时向一个操作员发送通知电子邮件。
问题:能否设置将通知电子邮件发送给多个操作员以针对这个特定的作业?
我认为这个问题的一个可能的解决方法是为数据库创建许多警报,针对每个给定的严重性级别,但我希望有更简洁的方法来完成。如果我选择这种方法,哪些严重性错误可能会由于作业失败而被触发?(我认为像这样的情况不需要所有的25个)
是否可以通过SQL命令来添加更多需要在作业失败时通知的操作员?从UI中似乎只能选择一个操作员。
问题:是否可能设置一封通知邮件并将其发送给多个操作者,针对于特定的作业?
我认为这是不可能的。
从[msdb].[dbo].[sysjobs]
表的结构来看,各种operator_id
列都在该表中,这支持了1到多不可能的想法。
但是有一些替代方法:
sysoperators
的定义,这适用于能够适应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会收到邮件。
我用来在 "JOB FAILURE"
时通知多个 "OPERATORS"
的最简单方法是:
在 SSMS>SQL Server Agent>Operators
中创建一个新的 OPERATOR
或 编辑
现有的,并在 "E-mail name:"
框中添加以 ";"
分隔的额外电子邮件地址。
你可以使用分号分隔的电子邮件地址列表创建一个新的运算符
。 - Martin Smith如果您的意图是让组织中的多个人员在作业失败时收到通知,而另一组多个人员在成功时收到通知,则以下是我想出的解决方法。
您会注意到步骤1-3是定期作业使用的正常任务,就像您为自己的任务所做的那样。在这些步骤之前可以有任意多个步骤,但是该过程的最后一步 (步骤3) 需要"在成功"和"在失败"时分别进入不同的电子邮件。此外,所有的“失败”都需要继续发送到下面突出显示的“失败电子邮件”。因此,失败组将收到他们的电子邮件,而作业仍将失败以供历史记录。
您将看到更改“成功操作”和“失败操作”的方向选项在作业步骤的高级选项卡中。
失败电子邮件步骤 - 一般属性
失败电子邮件步骤 - 高级属性
成功电子邮件步骤 - 一般属性
成功电子邮件步骤 - 高级属性
对于其他需要帮助的人。 通知多个操作员并显示不同结果
USE mdsdb
GO
ALTER TABLE sysoperators
ALTER COLUMN email_address NVARCHAR(2000);
[msdb].[dbo].[sysjobs]
有operator_id
列,而不是在支持一对多的单独表中。 - Martin Smith