Einfügen von Massendaten in SQL: OLEDB IRowsetFastLoad vs. Ado.Net SqlBulkCopy

ado.net oledb sqlbulkcopy sql-server

Frage

Ich evaluiere verschiedene Methoden für das Einfügen großer Datenmengen in SQL Server. Ich habe SqlBulkCopy Klasse von Ado.Net und IRowsetFastLoad Schnittstelle von OLEDB gefunden. Soweit ich weiß, wird IRowsetFastLoad nicht auf C # abgebildet, was meine Basisplattform ist. Daher prüfe ich, ob es sich lohnt, einen Wrapper für IRowsetFastLoad für .net zu erstellen, damit ich ihn für meine Anwendung verwenden kann.

Jeder weiß, ob IRowsetFastLoad tatsächlich eine bessere Leistung bringt als SqlBulkInsert - Wäre es sinnvoll, einen solchen Wrapper zu erstellen?

Akzeptierte Antwort

SqlBulkCopy ist das verwaltete Äquivalent von IRowsetFastLoad , sie sollten ähnlich IRowsetFastLoad . Im Allgemeinen ist OleDB aufgrund der Verfügbarkeit von Bindungen schneller als ADO.Net, was eine schnellere Übertragung von Daten innerhalb und außerhalb der API ermöglicht (weniger Memcopy erforderlich, da die Puffer vorher, fest und vor bekannt sind) -zugewiesen). ADO.Net bietet ein viel einfacheres Programmiermodell, aber es ist nicht möglich, Daten aus ADO.Net ohne eine Kopie zu erhalten. Aber für alle außer dem kritischsten Zugang sollte der Unterschied unmöglich zu messen sein.

Wenn es um den Unterschied geht, den Serverzugriff, dann verwenden beide die Fast-Load- INSERT BULK API (nicht in T-SQL verfügbar) und das, worauf es wirklich ankommt.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow