SQL BulkCopy против OPENDATASOURCE, какой из них быстрее

Я хочу вставить данные в sqlserver из файла доступа .mdb, что является самым быстрым способом выполнения вставки данных SQL BulkCopy или OPENDATASOURCE с использованием OLEDB.

Данные будут похожи на 100 000 записей примерно для 20 таблиц.

Спасибо.

Я делаю это из кода С#, где мне нужно, какой из них работает лучше, я не могу сравнивать, потому что OPENDATASOURCE запрашивает разрешения администратора.


person Lalitya    schedule 08.07.2013    source источник


Ответы (2)


По моему мнению, наилучшая производительность вставки для вставки больших объемов данных может быть достигнута с помощью массового копирования SQL, поскольку этот метод полностью обходит язык запросов SQL и передает данные непосредственно в SQL.

Дальнейшие улучшения производительности

  • По умолчанию SqlBulkCopy использует блокировки строк во время операции массового копирования. Если указан параметр TableLock в SqlBulkCopyOptions, он получает блокировку массового обновления на время операции массового копирования, и производительность будет повышена.
  • Кластеризованная таблица: если это возможно, лучший способ загрузить ее — удалить кластеризованный индекс.
  • Индексы: индексы создают огромные проблемы с параллелизмом, поэтому всегда полезно загружать без каких-либо активных индексов.

Вы можете прочитать больше в технической документации: производительность SqlBulkCopy http://www.sqlbi.com/wp-content/uploads/SqlBulkCopy-Performance-1.0.pdf

person microtechie    schedule 08.07.2013
comment
спасибо. но я хочу, какой из них работает лучше, так как я должен выпустить его в производство. - person Lalitya; 08.07.2013
comment
Не за что . и нет ничего сравнимого с SQLBulkCopy .. я видел, как разработчик спрашивает на форумах класс bulkcopy для Oledb, например sqlbulkcopy, используя sqlbulkcopy forums.asp.net/t/1537002.aspx/1 .. и codeproject.com/Questions/46816/Bulk-Copy-in-oledb .. так что еще раз я скажу, перейдите на массовое копирование sql :) - person microtechie; 08.07.2013

Вы пытались импортировать данные в базу данных sql из файла доступа? База данных->Задачи->Импорт, Microsoft Access в качестве источника данных, файл mdb в качестве параметра

Если вы хотите сделать это с помощью C#, вам следует рассмотреть возможность использования пользовательских типов таблиц с хранимыми процедурами.

person Ehsan    schedule 08.07.2013
comment
Я делаю это из кода С#, где мне нужно, какой из них работает лучше, я не могу сравнивать, потому что OPENDATASOURCE запрашивает разрешения администратора. - person Lalitya; 08.07.2013
comment
рассмотрите возможность использования пользовательских типов таблиц - person Ehsan; 08.07.2013