我有一個數據集合。我需要將這些記錄插入到SQL Server 2008中。我還需要維護事務,以便如果一個插入失敗,我需要回滾所有已完成的更改。通過Ado.Net 3.5和C多次插入到SQL Server 2008中#
有人可以建議一個最好的方法來做到這一點?我使用.Net 3.5。
我有一個數據集合。我需要將這些記錄插入到SQL Server 2008中。我還需要維護事務,以便如果一個插入失敗,我需要回滾所有已完成的更改。通過Ado.Net 3.5和C多次插入到SQL Server 2008中#
有人可以建議一個最好的方法來做到這一點?我使用.Net 3.5。
閱讀關於TransactionScope和System.Transactions的所有信息。
根據你使用的是ADO.NET/PLIN SQL,你可以使用bulk插入,或者,如果你正在使用Linq-to-SQL,你可以嘗試使用LINQ Entity Data Reader來一次插入大量數據。
通過使用批量插入,每個批次都作爲一個事務複製到服務器。如果失敗,SQL Server提交或回滾每個批次的事務。
您需要使用您的SqlConnection
對象的BeginTransaction方法創建交易。這將返回一個需要跟蹤的SqlTransaction
對象。
當您的所有項目都已成功插入數據庫時,您將在事務對象上調用Commit。
如果在處理過程中遇到異常,則需要對事務對象調用Rollback。
粗略地講,代碼:
SqlConnection conn;
// Create and open your connection here
SqlTransaction trans = conn.BeginTransaction();
try {
// Perform your inserts
trans.Commit();
} catch(Exception ex) {
trans.Rollback();
// Report the exception
}
我有我收集約300項。我應該向數據庫發出300個呼叫,全部在交易範圍下。我能以這種方式進行嗎? Ur評論? – Muthukumar
是的,你可以。它會工作。如果你發現它的運行速度太慢,你可以考慮批量機制。通常對於300件物品是不值得麻煩的(除非你每秒插入300件物品......)。 – zmbq
感謝你的建議。 – Muthukumar