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



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

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

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

你要找的东西有一个名字(至少在Oracle中):自治事务。 如果你谷歌"自治事务SQL服务器",你会得到这样的引用。

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

  1. 为事务建立与数据库的新连接。
  2. 将日志记录写入文件而不是数据库(文件不遵循事务语义)。 如果需要,您可以稍后将文件中的记录加载到表中。
  3. 不要使用显式事务,在失败的情况下实现"自定义"回滚。

这些都不完全令人满意,但它们是可行的解决方法。

最新更新