SSIS - программно уничтожение активного соединения OLEDB - PullRequest
1 голос
/ 27 апреля 2020

В SSIS я взаимодействую с базой данных SQL, к которой у меня есть доступ только для чтения. Лучшее, что я могу сделать, - это использовать глобальные временные таблицы.

Я хочу использовать задачу For Each L oop для циклического перемещения по базам данных на сервере путем изменения исходного свойства каталога в соединении. Для этого для параметра «RetainSameConnection» должно быть установлено значение «ложь», поскольку, если для него установлено значение «истина», я не могу изменить исходный каталог (или любую часть строки подключения) во время «Для каждого» L oop.

Если я отключу «RetainSameConnection», мои проблемы, похоже, будут решены. Первоначальный каталог меняется, и для каждой итерации l oop используется новое соединение. НО ...

Проблема в том, что мне нужно сделать 2 SQL шагов. Выполните сценарий SQL, а затем выполните Data FLow, который передаст содержимое таблицы ## TEMP в другую таблицу ## TEMP, которая существует в другом соединении, где для RetainSameConnection задано значение true.

Мне нужно 2 шага, потому что запрос сложный, в то время как я нашел обходные пути, выполнив некоторые сложные вещи в запросе SQL в источнике запросов данных, они не идеальны. Конечно, когда я пытаюсь использовать 2 разных шага SQL, ## TEMP из первого соединения не переходит к задаче потока данных, потому что RetainSameConnection выключен. В идеальном мире я мог бы установить RetainSameConnection в true во время l oop, чтобы я мог выполнить несколько SQL задач, а затем повернуть его в false в конце l oop.

Это долгий путь спрашивать ...

Есть ли в любом случае разорвать активное соединение (где RetainSameConnection имеет значение true) в конце моего l oop, чтобы я мог получить процесс для создания нового сеанса в начале следующий л oop?

...