在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合法吗? 是的,了解原因