我希望在抛出自定义错误消息时通知操作员。我的理解是我需要向 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)