一些开发人员在 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