Insertion de données en bloc dans SQL: OLEDB IRowsetFastLoad et Ado.Net SqlBulkCopy

ado.net oledb sqlbulkcopy sql-server

Question

J'évalue différentes méthodes pour insérer une grande quantité de données dans un serveur SQL. J'ai trouvé la classe SqlBulkCopy d'Ado.Net et l'interface IRowsetFastLoad d'OLEDB. Pour autant que je sache, IRowsetFastLoad ne mappe pas vers C #, qui est ma plate-forme de base. J'évalue par conséquent le besoin de créer un wrapper autour d'IRowsetFastLoad pour .net afin de pouvoir l'utiliser sur mon application.

Tout le monde sait si IRowsetFastLoad fonctionnerait mieux que SqlBulkInsert - Serait-il digne de créer un tel wrapper?

Réponse acceptée

SqlBulkCopy est l’équivalent géré d’ IRowsetFastLoad . Ils devraient fonctionner de la même manière. En règle générale, dans le client, OleDB est plus rapide qu’ADO.Net en raison de la disponibilité des liaisons, qui permettent un transfert plus rapide des données dans l’API (moins de mémoire requise, car les tampons sont connus à l’avance, fixes et pré -alloué). ADO.Net offre un modèle de programmation beaucoup plus simple, mais il n’est pas possible d’extraire des données d’ADO.Net sans les copier. Mais pour tous les accès sauf les plus critiques, la différence devrait être impossible à mesurer.

En ce qui concerne la différence qui compte, l’accès au serveur, ils utiliseront l’API INSERT BULK chargement rapide (qui n’est pas disponible directement dans T-SQL) et c’est ce qui compte vraiment.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi