【问题标题】:Does SqlBulkCopy Enlist in Ambient Transaction?SqlBulkCopy 在环境事务中登记吗?
【发布时间】:2015-10-11 08:51:21
【问题描述】:
我似乎无法找到明确的答案。我有一个 SqlBulkCopy 操作,它包含在带有许多其他操作的 TransactionScope 中。
我知道允许传递 SqlTransaction 对象的 SqlBulkCopy 构造函数中的重载。假设我没有在构造函数中传递事务,该命令会自动参与 TransactionScope 创建的环境事务吗?
【问题讨论】:
标签:
c#
sql-server
transactions
transactionscope
【解决方案1】:
我已经进行了一些测试,似乎 SqlBulkCopy 实际上确实支持环境事务,至少在 .Net 4.5 中是这样。
为了进行测试,我在调试时执行了 SqlBulkCopy 操作,并验证了行是否已进入数据库(通过 NOLOCK/脏读查询)。然后我在下一行代码中抛出异常,并允许 TransactionScope 回滚。然后我验证了这些行不再在数据库中。