有比RAISEERROR更好的日志记录替代方案吗



我一直在数据库脚本中使用RAISEERROR来记录信息性消息。

DECLARE @totalrows INT = (SELECT COUNT(*) FROM mytable);
DECLARE @fancyrows INT = (SELECT COUNT(*) FROM mytable WHERE fancy = 1);
RAISEERROR ('%i rows out of %i are fancy', 10, 1, @fancyrows, @totalrows) WITH NOWAIT;
-- Do some more things...

使用低于11的严重性参数意味着它不会停止脚本的执行,但我的同事指出,在读取脚本时,它似乎仍然意味着出现了问题。

是否有更清晰的方法在SQL中记录信息性消息?比如LOGMESSAGE

要给这个问题一个答案(基于@Scratte的链接和@Martin Smith的评论):

RAISEERROR是SQL Server中最强大的日志记录方法有一种PRINT方法在功能上类似,但在几点上有所欠缺。RAISEERROR的优点是:

  • 本机允许字符串插值
  • 可与WITH NOWAIT一起使用,从而立即记录其输出。PRINT使用的消息缓冲区可能会延迟其输出,但情况并非如此

相关内容

  • 没有找到相关文章

最新更新