Контролиране на потока в SSIS пакет въз основа на условие

Има ли начин условно (чрез задача на скрипт или нещо друго), да контролирате потока на програмата в SSIS?

В момента имам пакет, който би създал 5 различни Excel листа (чрез Execute SQL Task) динамично. Може да има моменти, когато всичките 5 ще имат данни или само 1 може да има данни. Когато само 1 има данни, всичко е наред. Но истинският проблем възниква, когато има 5 DFT, които се опитват да запишат данните едновременно в една и съща работна книга (макар и различни листове вътре в нея). Пакетът е неуспешен с OLEDB грешка.

След много разбиване на главата най-накрая разбрах, че това е проблем с контрола на паралелността, който не ми позволява да пиша в excel файла едновременно. За да продължа решението си, използвах изрази за ограничения на приоритета, за да контролирам дали листовете се създават или не. Но истинският проблем е, че след създаването на листовете, пакетът няма да се опита да запише данни на 2 различни листа едновременно.

Има ли начин да задам „Поръчка за изпълнение“ за DFT? Това е причината да търся скриптова задача, така че когато броят на конкретен лист е 0, тогава той не работи и контролата се премества в друг клон.

Надявам се, че не съм ви объркал тук. Но ако имам, ще се радвам да предоставя повече подробности по този въпрос. Благодаря за четенето.


person rvphx    schedule 21.12.2012    source източник
comment
Има цял раздел с документация относно контролния поток в SSIS, включително примери за уроци. Отговаря ли на въпроса ви?   -  person Pondlife    schedule 21.12.2012
comment
Съмнявам се, че има нещо за мен. Вече опитах ръката си с променливи и приоритетни ограничения. Това не работи добре. Въз основа на броя, върнат от таблица, трябва да контролирам кой DFT се изпълнява 1-ви и кой отива 2-ри и т.н.   -  person rvphx    schedule 21.12.2012
comment
Мисля на глас тук, но какво ще стане, ако току-що сериализирате всички задачи и след това там, където имате текущата логика на ограничение на приоритета, използвате това, за да активирате/деактивирате задачите. Мога да направя това като отговор, ако искате да го видите като снимка. Трябва да се премахнат предизвикателствата, свързани с паралелността   -  person billinkc    schedule 21.12.2012
comment
Дадено. Всичко, което може да бъде от полза, се оценява много.   -  person rvphx    schedule 22.12.2012


Отговори (1)


Първата ми мисъл е да имам куп контейнери за последователност, по един на възможен Excel лист, всеки от които съдържа три задачи:

  1. Задача на скрипт, за да разберете дали да създадете листа или не и съответно да зададете булева пакетна променлива
  2. SQL задача за създаване на работния лист
  3. Задача за поток от данни за попълване на работния лист

Ограничението за приоритет между задачи 1 и 2 би било израз на това, че булевото значение е вярно:

екранна снимка на редактор на ограничения за приоритет, показващ израз на @DoNorthRegion

Ограничението за приоритет между задачи 2 и 3 би било ограничение за успех, както и ограниченията за приоритет между контейнерите на последователности. Като цяло ще изглежда така:

екранна снимка на четири последователни контейнера, единият е разширен, за да покаже съдържание

person Edmund Schweppe    schedule 23.12.2012
comment
Това също би елиминирало проблема, който описахте в stackoverflow.com/questions/13976084/, тъй като бихте създали листа само ако има данни за поставяне в него. - person Edmund Schweppe; 23.12.2012
comment
А, да! Това изглежда е много добро решение. Имах нещо много подобно, но всички контейнери на последователността бяха свързани с общ родител. Нещо като конфигурация на паяци. Ще докладвам отново, ако се сблъскам с проблеми. Благодаря за помощта. - person rvphx; 24.12.2012
comment
Добавих всички необходими части и се радвам, че работи така, както исках. Вашата помощ наистина се оценява. - person rvphx; 24.12.2012
comment
това работи за мен, когато използвам контейнера за изпълнение във визуално студио, но по някаква причина се проваля, когато изпълня пакет - всякакви идеи защо са добре дошли, тъй като не мога да разбера разликата - контейнер за изпълнение работи , но когато изпълня пакета, той се проваля. - person codeputer; 04.03.2019
comment
@codeputer, ще ни трябват повече подробности. Има ли някакви параметри на ниво проект, които се извикват, или някаква конфигурация, която се извлича от изпълнението на пакета? Разрешихте ли проблема? - person rvphx; 11.03.2019