如何在使用 RaisError 时禁用有关临时错误消息的事件日志消息?

如何在使用 RaisError 时禁用有关临时错误消息的事件日志消息?

一些开发人员在 RaiseError 中使用以下语法:

RAISERROR('My business error message', 16, 0)

目的也是为了重用 try..catch 块的 catch 部分来处理业务错误。

但我发现了几个这样的事件日志条目:

Msg # 50006, <blabla> please register the error message with sp_addmessage

有没有什么方法可以禁止创建此类事件?我搜索了 google、msdn 和 docs,但没有找到任何线索。

答案1

这意味着其他一些开发人员正在使用RAISERROR(50006, 16,1)... 当使用 msgid 语法时(或者当语法中的 @local_variable 是 int 时),预期消息已添加到本地消息表中。这是本地化错误的正常方法,即引发错误 msgid 并添加针对各种语言本地化的消息。

无论哪个应用程序/开发人员使用 msgid 语法,他/她还负责在部署期间将消息添加到消息表中,以适应服务器的区域设置。

答案2

RAISEERROR('这只是信息', 10, 1)

这将告诉 SQL Server 引发非致命错误。

参考:http://www.sqlteam.com/article/handling-errors-in-stored-procedures

相关内容