【发布时间】:2019-07-05 01:28:42
【问题描述】:
我正在尝试为存储过程创建一些标准日志记录以及我们的标准错误处理。我想在 sproc 的开头调用一个存储过程来记录它已经启动的表,并在最后调用一个存储过程来记录它已经成功完成。我还想从错误处理程序中调用一个存储过程来记录失败和错误消息/编号。
存储过程可能有它自己的事务,或者它的调用堆栈可能已经启动了一个事务,或者可能没有打开事务。无论主事务中发生什么,我都不希望我对日志记录过程的任何调用都被回滚。即日志存储过程的处理需要与主处理完全分开。
是否可以在事务期间像在单独的会话中一样执行某些 SQL?实现这一目标的最简单方法是什么?
顺便说一句,我不能使用 xp_cmdshell,否则我会调用 sqlcmd。
谢谢,
标记
【问题讨论】:
-
我建议你阅读 Erland 关于错误处理的讨论 here。它讨论了一般的错误处理。另请注意,链接服务器是出了名的脆弱。
标签: sql-server error-handling transactional error-logging