Insertar datos masivos en SQL: OLEDB IRowsetFastLoad vs. Ado.Net SqlBulkCopy

ado.net oledb sqlbulkcopy sql-server

Pregunta

Estoy evaluando diferentes métodos para insertar una gran cantidad de datos en el servidor SQL. He encontrado SqlBulkCopy clase de Ado.Net y IRowsetFastLoad interfaz de OLEDB. Por lo que sé, IRowsetFastLoad no se asigna a C #, que es mi plataforma base, por lo que estoy evaluando si valdría la pena crear una envoltura alrededor de IRowsetFastLoad para .net, por lo que puedo usarlo en mi aplicación.

Alguien sabe si IRowsetFastLoad funcionaría mejor que SqlBulkInsert. ¿Sería digno de crear tal envoltorio?

Respuesta aceptada

SqlBulkCopy es el equivalente administrado de IRowsetFastLoad , deberían funcionar de manera similar. En el cliente, como regla general, OleDB es más rápido que ADO.Net debido a la disponibilidad de enlaces, lo que permite una transferencia más rápida de datos dentro y fuera de la API (se requiere menos copia de memoria porque los búferes son conocidos por adelantado, fijos y previos). -asignado). ADO.Net ofrece un modelo de programación mucho más sencillo, pero no es posible obtener datos de ADO.Net sin una copia. Pero para todos, excepto para el acceso más crítico, la diferencia debería ser imposible de medir.

En lo que respecta a la diferencia que importa, el acceso al servidor, ambos usarán la API de INSERT BULK carga rápida (no disponible de T-SQL directo) y eso es lo que realmente importa.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow