在事务性SqlBulkCopy期间管理网络故障

ado.net c# sql sqlbulkcopy

我正在研究ADO.Net中的SqlClient的SqlBulkCopy并提出以下问题。

如果在SqlBulkCopy操作期间出现网络错误,在大量记录中作为事务的一部分运行,会发生什么?

交易是否会在服务器中保持打开状态(既不提交也不回滚),直到我们手动终止它为止?

将DataSet中的两个DataTable(InvoiceHeader,InvoiceDetails)中的大量记录发送到相应的SQL Server表(InvoiceHeader,InvoiceDetails)的最佳方法是什么?

谢谢。

编辑:

我想添加的一些细节,但忘了:

这适用于.Net v3.5;我正在使用Enterprise Library进行所有数据库交互。

一般承认的答案

假设您正在使用TransactionScope,我的理解是不 ,该事务将不会保持打开状态,因为SQL Server将检测环境事务并自动登记。这意味着最糟糕的情况是交易超时,回滚。您可以更改事务绑定以指定在超时的情况下要执行的操作(您可能希望显式取消绑定)。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因