Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL中插入批量数据:OLEDB IRowsetFastLoad与Ado.Net SqlBulkCopy_Sql Server_Ado.net_Oledb_Sqlbulkcopy - Fatal编程技术网

Sql server 在SQL中插入批量数据:OLEDB IRowsetFastLoad与Ado.Net SqlBulkCopy

Sql server 在SQL中插入批量数据:OLEDB IRowsetFastLoad与Ado.Net SqlBulkCopy,sql-server,ado.net,oledb,sqlbulkcopy,Sql Server,Ado.net,Oledb,Sqlbulkcopy,我正在评估在SQL server中插入大量数据的不同方法。我从Ado.Net中找到了类,从OLEDB中找到了接口。据我所知,IRowsetFastLoad没有映射到我的基本平台C#,因此我正在评估是否值得在IRowsetFastLoad for.net周围创建一个包装器,以便我可以在我的应用程序上使用它 任何人都知道IRowsetFastLoad是否真的比SqlBulkInsert性能更好——创建这样的包装器值得吗?SqlBulkCopy是IRowsetFastLoad的托管等价物,它们的性能应

我正在评估在SQL server中插入大量数据的不同方法。我从Ado.Net中找到了类,从OLEDB中找到了接口。据我所知,IRowsetFastLoad没有映射到我的基本平台C#,因此我正在评估是否值得在IRowsetFastLoad for.net周围创建一个包装器,以便我可以在我的应用程序上使用它


任何人都知道IRowsetFastLoad是否真的比SqlBulkInsert性能更好——创建这样的包装器值得吗?

SqlBulkCopy
IRowsetFastLoad
的托管等价物,它们的性能应该类似。在客户机中,通常情况下,OleDB比ADO.Net快,因为绑定的可用性允许更快地将数据传入和传出API(所需的memcopy更少,因为缓冲区是预先已知的、固定的和预先分配的)。ADO.Net提供了一个简单得多的编程模型,但是不可能从ADO.Net中获取数据,而不需要拷贝。但对于除最关键的访问之外的所有访问,差异应该是无法衡量的


说到重要的区别,服务器访问,他们都将使用快速加载
插入批量
API(不能从straight T-SQL获得),这才是真正重要的。

因此,如果我真的为IRowsetFastLoad OLE DB创建.net包装器;基本上,我引入的差异最终会使我的组件比简单使用SqlBulkCopy执行得慢?我没有考虑过互操作和从本机/托管开销封送到的问题,但你是对的,如果您使用CLI包装它,并确保在大数据块中只将调用体系结构切换为本机,那么我认为它可能比SqlBulkCopy性能更好。