在SQL中插入批量數據:OLEDB IRowsetFastLoad與Ado.Net SqlBulkCopy

ado.net oledb sqlbulkcopy sql-server

我正在評估在SQL服務器中插入大量數據的不同方法。我從Ado.Net找到了SqlBulkCopy類,從OLEDB找到了IRowsetFastLoad接口。據我所知,IRowsetFastLoad沒有映射到C#,這是我的基礎平台,所以我正在評估是否值得為.net創建IRowsetFastLoad的包裝器,所以我可以在我的應用程序上使用它。

任何人都知道IRowsetFastLoad是否實際上比SqlBulkInsert更好 - 是否值得創建這樣的包裝器?

一般承認的答案

SqlBulkCopyIRowsetFastLoad的託管等價物,它們應該執行類似的操作。在客戶端,作為一般規則,由於綁定的可用性,OleDB比ADO.Net更快,這允許更快地將數據傳入和傳出API(需要更少的memcopy,因為緩衝區是已知的,固定的和預先知道的-allocated)。 ADO.Net提供了一種更簡單的編程模型,但不可能從ADO.Net獲取數據,而無需複制。但對於除了最關鍵的訪問之外的所有訪問,應該無法衡量差異。

在重要的差異,服務器訪問,他們都將使用快速加載INSERT BULK API(不是直接T-SQL提供)和真正重要的。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因