Я оцениваю различные методы для вставки большого количества данных в 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), и это действительно важно.