SqlBulkCopy Close方法是否会提交/处置外部事务?

本文关键字:外部 事务 提交 Close 方法 是否 SqlBulkCopy | 更新日期: 2023-09-27 18:12:28

我有一个SQL批量复制函数,它有以下代码来创建一个批量复制实例。

 SqlBulkCopy bulkCopy = new SqlBulkCopy((SqlConnection) WorkConnection,
            SqlBulkCopyOptions.FireTriggers, (SqlTransaction) WorkTransaction);

"WorkTransaction"是一个外部事务。它会发生什么

  1. 如果我们在SqlBulkCopy周围使用"using"块。是否会处理这个外部事务?
  2. 如果我们调用close function ("bulkCopy.Close();"),它会提交/处理外部事务吗?

任何帮助将不胜感激!

谢谢

SqlBulkCopy Close方法是否会提交/处置外部事务?

No。向SqlBulkCopy提供外部事务的目的是允许在事务中包含其他操作,因此,除非发生错误,否则SqlBulkCopy不会终止事务。

来自MS Doc:

可以指定一个现有的SqlTransaction对象作为参数SqlBulkCopy构造函数。在这种情况下,大容量复制操作为在现有事务中执行,并且不更改事务状态(即既未提交也未中止)。这控件中包含大容量复制操作与其他数据库操作的事务。