Chr*_*hee 2 sql-server alerts raiserror
在我看来,SQL THROW 缺少一个重要的功能,那就是当错误号记录在应用程序日志中时可以触发警报的RAISERROR
能力。WITH LOG
有没有一种简单的方法可以做到这一点,但我却无法做到这一点,还是我仍然必须依赖更麻烦的RAISERROR
SP sp_addmessage
?
我希望能够通过THROW
在块中使用的警报来通知操作员CATCH
。
不,THROW
缺少一些RAISERROR
功能,包括WITH LOG
. 当 SQL Server 2012 仍处于测试阶段时,我在博客中讨论了这一点,此后没有进行任何更改:
但是,您不需要使用sp_addmessage
将消息发送RAISERROR
到日志,除非您需要 50000 之外的自定义消息号:
DECLARE @s VARCHAR(32) = 'friend';
RAISERROR(N'What happened %s?', 19, 1, @s) WITH LOG;
Run Code Online (Sandbox Code Playgroud)
结果:
再次阅读问题的实质内容,您可能确实想用它sp_addmessage
来实现您的最终目标。我不应该尝试将日志记录与此分开(如果您记录了其他错误并想要不同的警报,50000 并没有多大帮助)。
将错误号放入由 引发的消息的文本RAISERROR
中的示例:
BEGIN TRY
SELECT 1/0;
END TRY
BEGIN CATCH
DECLARE @err INT = ERROR_NUMBER();
RAISERROR(N'What happened %d?', 19, 1, @err) WITH LOG;
END CATCH
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
828 次 |
最近记录: |