Использование команды SQL в месте назначения OLEDB - PullRequest
0 голосов
/ 07 декабря 2018

Может кто-нибудь посоветовать, является ли наилучшей практикой / рекомендовать использовать режим доступа к командам SQL внутри пункта назначения OLEDB в SSIS. ??Какие могут быть плюсы и минусы этого режима доступа.Заранее спасибо.

1 Ответ

0 голосов
/ 07 декабря 2018

С большей вероятностью вы получите более высокую производительность, если использовать опцию Table or view - fast load, а не команду SQL.По умолчанию при использовании команды SQL не будут использоваться те же функции, что и у опции быстрой загрузки.При использовании быстрой загрузки это будет работать как BULK INSERT.Этот параметр также получает блокировки страниц Exclusive (X) и таблиц Intent Exclusive (IX), в то время как параметр SQL Command будет принимать блокировки Shared (S) и Schema Stability (Sch-S) только для соответствующих объектов.,Подтвердить это можно, просмотрев эти блокировки либо через sys.dm_tran_locks, либо через событие расширения, например, событие lock_acquired.Если вы используете расширенное событие, чтобы сделать вашу транзакцию проще для распознавания, при этом установите свойство Application Name в строке подключения и посмотрите на это.Блокировки таблицы X не позволят другим пользователям получить доступ к таблице во время этой операции, и потенциальная блокировка - это то, что вы захотите взвесить при рассмотрении обоих вариантов.

Если ваше назначение - это таблица SQL Server илиview, рекомендуется назначение SQL Server.Однако этот параметр предназначен только для загрузки в локальный пункт назначения, и это ограничение необходимо учитывать при планировании долгосрочной разработки.Таким образом, если текущим пунктом назначения является локальный, но через несколько лет это может измениться, тогда OLE DB Destination будет лучшим вариантом.Подобно опции быстрой загрузки в пункте назначения OLE DB, здесь будут использоваться возможности BULK INSERT, однако у пунктов назначения SQL Server есть преимущество применения преобразований к данным столбца перед загрузкой таблицы назначения.Назначение SQL Server может избежать блокировки таблицы назначения OLE DB, если для BulkInsertTabLock установлено значение false.Я обнаружил, что использование SQL Server Destination имеет тенденцию работать лучше, чем OLE DB Destination, однако вы должны проверить это с помощью тестовой среды, которая специально имитирует, когда процесс будет выполнен, чтобы оценить результаты самостоятельно.Ссылка MSDN для типов адресатов приведена ниже.

Назначение OLE DB

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

...