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

时间:2011-04-11 18:12:54

标签: c# sql ado.net sqlbulkcopy

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

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

在我们手动杀死它之前,事务是否会在服务器中保持打开状态(既不提交也不回滚)?

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

谢谢。

编辑:

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

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

1 个答案:

答案 0 :(得分:1)

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