小编Dan*_*ing的帖子

如何在 SQL Server 2012 中针对自定义错误消息创建 SQL 代理警报?

我希望在抛出自定义错误消息时通知操作员。我的理解是我需要向 sys.messages 添加一条消息,然后我可以RAISERROR或者THROW那个错误 ID。在消息 ID 上创建警报并将其设置为发送给操作员应该会创建这些通知。

我在消息 ID 50005 上创建了 SQL 代理警报,并使用以下 T-SQL 创建消息:

EXEC sp_addmessage @msgnum = 50005,
          @severity = 16,
          @msgtext = N'%s';
GO
Run Code Online (Sandbox Code Playgroud)

然后,如果我执行这个:

RAISERROR (50005, -- Message id.
       16, -- Severity,
       1, -- State,
       N'My custom message');
THROW 50005, 'My custom message', 1;
GO
Run Code Online (Sandbox Code Playgroud)

我从RAISERROR和得到以下输出THROW

Msg 50005, Level 16, State 1, Line 68 我的自定义消息

但是,当我查看警报的历史记录时,它显示它尚未触发,并且操作员未收到电子邮件更新。

我的代理警报如下所示:

代理警报设置

编写警报脚本会生成以下内容:

USE [msdb]
GO
EXEC msdb.dbo.sp_update_alert @name=N'Alert DBA on custom errors', 
    @message_id=50005, …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-2012 sql-server-agent alerts raiserror

6
推荐指数
1
解决办法
4546
查看次数