我正在评估在SQL Server中插入大量数据的不同方法。我从Ado.Net找到了SqlBulkCopy类,从OLEDB找到了IRowsetFastLoad接口。据我所知,IRowsetFastLoad没有映射到C#,这是我的基础平台,所以我正在评估是否值得为.net创建IRowsetFastLoad的包装器,所以我可以在我的应用程序上使用它。 / p>
任何人都知道IRowsetFastLoad实际上是否会比SqlBulkInsert更好 - 是否值得创建这样的包装器?
答案 0 :(得分:2)
SqlBulkCopy
是IRowsetFastLoad
的托管等价物,它们的表现应该相似。在客户端,作为一般规则,由于绑定的可用性,OleDB比ADO.Net更快,这允许更快地将数据传入和传出API(需要更少的memcopy,因为缓冲区是已知的,固定的和预先知道的-allocated)。 ADO.Net提供了一种更简单的编程模型,但不可能从ADO.Net获取数据而无需复制。但对于除了最关键的访问之外的所有访问,都应该无法衡量差异。
对于重要的差异,服务器访问,他们都将使用快速加载INSERT BULK
API(不能从直接的T-SQL获得)以及真正重要的内容。