Назначение сервера SQL vs назначение OLE DB
Я использовал назначение OLE Db для группового импорта нескольких плоских файлов. После некоторой настройки я выбрал пункт назначения SQL Server на 25 - 50 % быстрее.
Хотя я запутался в этом месте, так как в Интернете есть противоречивая информация, некоторые против этого, некоторые предлагают использовать его. Я хотел бы знать, есть ли серьезные подводные камни, прежде чем я разверну его в производство? Спасибо
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 и использование опции быстрой загрузки, оптимизированной для массовых вставок
Назначение OLEDB и назначение SQL Server
Согласно этой странице MSDN:
Дональд Фармер (Donald Farmer), бывший руководитель групповых программ для служб Integration Services, сказал, что вы можете увеличить производительность на 5-10%, используя SQL Server Destination
,
Заключение
Основываясь на этой информации, вы можете сказать, что SQL Server Destination
повысить производительность вставки данных (используется BULK-вставка), но он предназначен для конкретного случая, а именно для локального сервера SQL. OLEDB Destination
является более общим и рекомендуется в других случаях.
Также Вы можете просто использовать Fast Load
режим доступа к данным (который также использует BULK) на OLE DB destination
увеличить производительность вставки. Но вы должны принять во внимание, что опция "Быстрая загрузка" будет выполнять блокировку таблицы для таблицы назначения и запрещать другим пользователям доступ к ней во время вставки.
Чтобы дополнить хороший ответ Хади, не используйте назначение SQL Server.
По моему опыту, выигрыш в производительности не перевешивает ограничение на то, что пакет должен выполняться на той же машине, что и база данных назначения. Это форсирует архитектуру обработки, которая может или не может быть подходящей для вас сегодня или через год. Это просто слишком негибко для моих вкусов.
Другая, более важная причина, по которой я рекомендую избегать использования SQL Server Destination, заключается в том, что с этим я сталкиваюсь. Тот же плоский файл для пустой таблицы - раунд 1, он прерывается с неопределенным сообщением об ошибке (не может вспомнить конкретное), что что-то пошло не так. Немедленно перезапустите пакет, и он работает как положено. Может быть, вы, самый скромный читатель, можете принять этот компромисс во время обработки на время обработки, но для меня это не стоило того, вероятно, с 2008 года.