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

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

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

Благодарю.

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

2 ответа

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

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

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

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

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

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

Другие вопросы по тегам