sql-server - 我可以在事务期间在单独的事务中运行一些SQL吗

标签 sql-server error-handling transactional error-logging

我正在尝试为存储过程以及我们的标准错误处理创建一些标准日志记录。我想在存储过程的开头调用存储过程以登录到它已启动的表,并在存储末尾调用存储过程以记录它已成功完成的日志。我还想从错误处理程序中调用存储过程来记录故障和错误消息/编号。

该存储过程可能具有其自己的事务,或其调用堆栈可能已开始一个事务,或者可能没有打开的事务。无论主事务中发生了什么,我都根本不想回滚对日志记录过程的任何调用。即,记录存储过程的处理需要与主处理完全分开。

是否可以执行某些SQL,就好像它在事务期间处于单独的 session 中一样?最简单的方法是什么?

顺便说一句,我不能使用xp_cmdshell,否则我将对sqlcmd进行调用。

谢谢,

标记

最佳答案

您所描述的是嵌套事务。但是,嵌套事务不是真实的。 https://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-2630-nested-transactions-are-real/您将不得不在另一个上下文中进行日志记录。由于您处于存储过程中,因此必须在日志记录代码中使用动态sql才能起作用。

关于sql-server - 我可以在事务期间在单独的事务中运行一些SQL吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54632493/

相关文章:

ruby-on-rails-3 - Rails 3 : How to report error message from the controller's “create” action?

java - @事务: Is there a way that hibernate can persist child transacttion when parent fails

java - Spring 事务传播 - Service 与 DAO

r - 简单的if-else代码执行后,R-studio服务器返回错误

Java 等同于未捕获异常的 coredump

git - 如果修改它的命令崩溃或中止,git 存储库是否会损坏?

c# - EntityType 没有定义键

php - PDO dblib 未捕获警告

sql-server - SQL Server - 将多个查询结果合并为一个结果集

sql - 将参数的默认值传递给表值函数