Назначение SQL Sever vs назначение OLE DB


Я использовал назначение OLE Db для массового импорта нескольких плоских файлов. После некоторой настройки я получил назначение SQL Server на 25 - 50% быстрее.

Хотя я в замешательстве относительно этого назначения, поскольку в интернете есть противоречивая информация, некоторые против него, некоторые предлагают его использовать. Я хотел бы знать, есть ли какие-либо серьезные подводные камни, прежде чем я разверну его в производство? Спасибо

2 2

2 ответа:

Назначение SQL Server

Согласно этой статье Microsoft:

Назначение SQL Server подключается к локальной базе данных SQL Server и массово загружает данные в таблицы и представления SQL Server. Назначение SQL Server нельзя использовать в пакетах, которые обращаются к базе данных SQL Server на удаленном сервере. Вместо этого пакеты должны использовать назначение OLE DB.

Назначение SQL Server предлагает такую же высокоскоростную вставку данных в SQL Server однако при использовании назначения SQL Server пакет может применять преобразования к данным столбцов до их загрузки в SQL Server.

Для загрузки данных в SQL Server следует рассмотреть возможность использования назначения SQL Server вместо назначения OLE DB

Назначение OLEDB

Согласно этой статье Microsoft:

Назначение OLEDB-быстрая загрузка: загрузка данных в таблицу или представление в OLE DB destination и использовать опцию быстрой загрузки, которые оптимизированы для массовых вставок

Назначение OLEDB vs назначение SQL Server

Согласно этой странице MSDN:

Дональд Фармер, бывший менеджер программ Группы Integration Services, сказал, что вы можете получить от 5 до 10% увеличение производительности с помощью SQL Server Destination.

Заключение

Основываясь на этих данных, можно сказать, что SQL Server Destination увеличивает производительность вставки data (он использует BULK insert), но он предназначен для конкретного случая, который является локальным SQL-сервером. OLEDB Destination является более общим и рекомендуется в других случаях.

Также вы можете просто использовать Fast Load Режим доступа к данным (который также использует массовую вставку) на OLE DB destination, чтобы увеличить производительность вставки. Но вы должны принять во внимание, что опция быстрой загрузки сделает блокировку таблицы на целевой таблице и не позволит другим пользователям получить к ней доступ во время вставки.

Чтобы дополнить прекрасный ответ Хади, не используйте назначение SQL Server.

По моему опыту, преимущество производительности не перевешивает ограничение, что пакет должен выполняться на той же машине, что и целевая база данных. Это заставляет архитектуру обработки, которая может быть или не быть подходящей для вас сегодня или через год. На мой вкус, она слишком негибкая.

Другая, более серьезная причина, по которой я выступаю за то, чтобы избегать назначения SQL Server, - это явная ошибка, которую я опыт работы с ним. Тот же плоский файл в пустой стол-раунд 1, он прерывается с неопределенным сообщением об ошибке (не могу вспомнить конкретного), что что-то пошло не так. Немедленно перезагрузите пакет, и он будет работать, как и ожидалось. Возможно, вы, самый скромный читатель, можете принять этот компромисс времени обработки для времени переработки, но для меня это не стоит того, вероятно, с 2008 года.