一些开发人员在 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,但没有找到任何线索。
这意味着其他一些开发人员正在使用
RAISERROR(50006, 16,1)
... 当使用 msgid 语法时(或者当语法中的 @local_variable 是 int 时),期望消息被添加到本地消息表中。这是本地化错误、引发错误并添加针对各种语言本地化的消息的常规方法。无论应用程序/开发人员使用 msgid 语法,他/她还负责在部署期间将消息添加到消息表中,用于服务器的语言环境。
这将告诉 SQL Server 引发一个非致命错误。
参考:http ://www.sqlteam.com/article/handling-errors-in-stored-procedures