我正在ADO.Net中研究SqlClient的SqlBulkCopy,并提出以下问题。
如果在 SqlBulkCopy 操作期间出现网络错误,在大量记录中作为事务的一部分运行,会发生什么?
在我们手动杀死它之前,事务是否会在服务器中保持打开状态(既不提交也不回滚)?
将DataSet中的两个DataTables(InvoiceHeader,InvoiceDetails)中的大量记录发送到相应的SQL Server表(InvoiceHeader,InvoiceDetails)的最佳方法是什么?
谢谢。
编辑:
我想添加的一些细节,但忘记了:
这适用于.Net v3.5;我正在使用Enterprise Library进行所有数据库交互。
答案 0 :(得分:1)
假设您使用的是TransactionScope,m y understanding is that no,事务将不会保持打开状态,因为SQL Server将检测环境事务并自动登记。这意味着最糟糕的情况是交易超时,回滚。您可以更改transaction binding以指定在超时的情况下要执行的操作(您可能希望显式取消绑定)。