是否可以在 SQL Server 2008 中设置警报,以便在特定类别的作业失败时发送电子邮件?
我想知道,因为我想在 SSRS 订阅失败时设置电子邮件 - 所有这些订阅都是Report Server类别中的作业。
编辑- 事实证明,当 SSRS 订阅失败时,作业本身不会失败,所以我的问题不适用于 SSRS 订阅监控使用。但是我仍然想知道我们在我们的环境中运行的其他工作
是否可以在 SQL Server 2008 中设置警报,以便在特定类别的作业失败时发送电子邮件?
我想知道,因为我想在 SSRS 订阅失败时设置电子邮件 - 所有这些订阅都是Report Server类别中的作业。
编辑- 事实证明,当 SSRS 订阅失败时,作业本身不会失败,所以我的问题不适用于 SSRS 订阅监控使用。但是我仍然想知道我们在我们的环境中运行的其他工作
您可以创建一个作业,每分钟检查一次 msdb.dbo.sysjobhistory 表(或者您想要的频率)。您可能希望实现一个队列表,以便您只为任何单个实例故障发送一次消息。
因此,您可以在作业中安排的代码变为:
现在我假设您想为每次失败发送一封单独的电子邮件,因此这也可能是工作的一部分(或不同工作的一部分,尽管这不一定是明智的):
还有一些其他的选择:
如果尚未设置数据库邮件,请参阅本教程。
您还可以使用 3rd 方工具(例如SQL Sentry),这将使这一切变得更简单。完全披露:我为 SQL Sentry 工作。
根据您的编辑,这只是 Aaron 的回答的扩展,涉及 SSRS 订阅失败本身(不仅仅是 SQL 代理作业)。我建议只在作业监控作业中添加一个步骤,或者您可以完全将其作为一项单独的作业来完成。
要获得订阅状态,您只需检查
ReportServer.dbo.ExecutionLog3
视图。该Status
列将显示除rsSuccess
失败之外的任何内容。只需过滤RequestType = 'Subscription'
. 您将需要包括一些时间检查,因此您不会每次都检查所有记录。如果您每 15 分钟运行一次作业,只需检查TimeStart
过去 15 分钟。