在事務性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合法嗎? 是的,了解原因