Большая длительность до выполнения при использовании транзакций SQL - PullRequest
0 голосов
/ 22 января 2020

Я довольно новичок в SSIS, и у меня возникает проблема с длительным временем предварительного выполнения (я видел, как он зависал при предварительном выполнении в течение 8 часов, пока я не отменил его) при выполнении пакетов, использующих SQL транзакции (BEGIN / COMMIT / ROLLBACK TRAN) при выполнении SQL задач в VS 2017 (SSDT) ​​и SQL агент сервера.

Я пытаюсь извлечь не более 300 000-300 строк из таблицы в нашем DWH и просто записать ее в промежуточную таблицу на другом сервере, который ежедневно усекается и загружается с данными fre sh. У меня есть 5 пакетов в моем решении, которое делает это, используя одни и те же соединения проекта. Поскольку MSDT C не настроен в наших системах, я решил использовать подход, подробно описанный в этом посте, чтобы я мог использовать транзакции без него: https://www.mssqltips.com/sqlservertip/3072/sql-server-integration-services-ssis-transactions-without-msdtc/

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

Sample package

Я не мог понять, почему мои пакеты зависают или занимает много времени для запуска фазы предварительного выполнения. Есть случаи, когда я запускаю его в SSDT, и он работает безупречно в течение нескольких секунд, в тот момент, когда я запускаю его снова, ничего не меняя, он застревает. Я сомневаюсь, что сами запросы являются проблемой, поскольку они могут выполняться всего за несколько секунд в SSMS. Я уже пробовал следующее:

  • Установить DelayValidation в True
  • Установить ValidateExternalMetaData в False
  • Установить AutoAdjustBufferSize в True (поскольку я заметил, что некоторые неудачные замены буфера в журналах)
  • Правильно установлен TargetServerVersion в конфигурациях проекта

Единственный временный Исправление, которое я обнаружил до сих пор, - это избавление от задач Execute SQL для транзакций, что привело меня к мысли, что это как-то связано с ними. Почему это происходит, когда я использую транзакции? Любая помощь будет принята с благодарностью.

...