有没有办法从事务块中执行单个SQL语句,该事务块不包含事务

时间:2016-03-07 11:56:01

标签: sql sql-server transactions

有没有办法从事务中排除的事务块中执行单个SQL Server T-SQL语句?

例如,我们希望在批处理过程中定期写入状态表,即在事务中建议完成该过程的程度(参见下面的原因),但是如果批处理失败并且事务处理回滚后,写入状态表的记录应保持不变。

在我们进行过程中写入状态表的原因是,当批处理运行时,可以监视批处理的进度。

1 个答案:

答案 0 :(得分:2)

您正在寻找的是一个名称(至少在Oracle中):自治事务。如果您使用Google“自治事务sql server”,则会获得thisthis等参考。

SQL Server中基本上有三种方法:

  1. 为事务建立与数据库的新连接。
  2. 将日志记录写入文件而不是数据库(文件不遵循事务语义)。如果需要,您可以稍后将文件中的记录加载到表中。
  3. 不要使用显式事务,在失败的情况下实现“自定义”回滚。
  4. 这些都不是完全令人满意的,但它们是可行的解决方案。