Yur*_*han 1 sql-server sql-server-2012 sql-server-agent alerts
下一个警报已创建:
USE [msdb]
GO
/****** Object: Alert [Notify] Script Date: 09/09/2014 11:38:31 ******/
EXEC msdb.dbo.sp_add_alert @name=N'Notify',
@message_id=0,
@severity=16,
@enabled=1,
@delay_between_responses=0,
@include_event_description_in=0,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
Run Code Online (Sandbox Code Playgroud)
我希望下一个代码会导致它发生:
THROW 51000, 'The record does not exist.', 1;
Run Code Online (Sandbox Code Playgroud)
或者下一个代码:
RAISERROR ('Error raised.', 16, 1);
Run Code Online (Sandbox Code Playgroud)
系统消息不包含错误消息:
SELECT *
FROM sys.messages
WHERE language_id = 1033
and severity>=16
ORDER BY severity asc, message_id asc
Run Code Online (Sandbox Code Playgroud)
我在历史选项卡中也没有事件:
我错过了什么?
阅读有关sp_add_alert的 BOL 文章
[ @severity = ] 严重性- 定义警报的严重性级别(从 1 到 25)。存储在 sysmessages 表中的任何 SQL Server 消息以指定的严重性发送到 Microsoft Windows 应用程序日志,都会导致发送警报。Severity 为 int,默认为 0。如果使用 message_id 定义警报,则 Severity 必须为 0。
如果要为用户定义的错误消息添加警报,则需要sys.messages
使用sp_addmessage将错误消息添加到表中
EXEC sp_addmessage @msgnum= 90210, @severity=16, @msgtext='Error raised.', @lang= 1033;
Run Code Online (Sandbox Code Playgroud)
要真正提高错误警报,您必须注意一些注意事项(认真...阅读在线指南...这就是我在这里所做的一切...)
在这些情况下,SQL Server 和 SQL Server 应用程序生成的错误/消息会发送到 Windows 应用程序日志并因此引发警报:
• 严重性 19 或更高的 sys.messages 错误• 任何使用 WITH LOG 语法调用的 RAISERROR 语句
• 使用 sp_altermessage 修改或创建的任何 sys.messages 错误
• 使用 xp_logevent 记录的任何事件
因此RAISERROR
,默认情况下,严重性为 16 的错误不仅会提醒您,您还需要在WITH LOG
其后添加。
RAISERROR(@ErrorMessage, @ErrorSeverity, 1) WITH LOG
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4647 次 |
最近记录: |