Вставка массовых данных в SQL: OLEDB IRowsetFastLoad и Ado.Net SqlBulkCopy

ado.net oledb sqlbulkcopy sql-server

Вопрос

Я оцениваю различные методы для вставки большого количества данных в SQL-сервер. Я нашел SqlBulkCopy класс от Ado.Net и IRowsetFastLoad интерфейса с OLEDB. Насколько я знаю, IRowsetFastLoad не сопоставляется с C #, которая является моей базовой платформой, поэтому я оцениваю, стоит ли создавать оболочку вокруг IRowsetFastLoad для .net, поэтому я могу использовать ее в своем приложении.

Кто-нибудь знает, действительно ли IRowsetFastLoad будет работать лучше, чем SqlBulkInsert. Было бы целесообразно создать такую ​​оболочку?

Принятый ответ

SqlBulkCopy - это управляемый эквивалент IRowsetFastLoad , они должны работать аналогичным образом. В клиенте, как правило, OleDB быстрее, чем ADO.Net, из-за доступности привязок, которые позволяют быстрее переносить данные в API и из него (меньше memcopy требуется, потому что буферы известны заранее, фиксированные и предварительно -allocated). ADO.Net дает гораздо более легкую модель программирования, но невозможно получить данные из ADO.Net w / oa copy. Но для всех, кроме самого важного доступа, разницу нельзя измерить.

Когда дело доходит до разницы, которая имеет значение, доступ к серверу, они оба будут использовать API быстрой загрузки INSERT BULK (недоступный из прямого T-SQL), и это действительно важно.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow