Управление потоком в пакете SSIS на основе условия

Есть ли способ условно (с помощью задачи сценария или чего-либо еще) контролировать поток программы в SSIS?

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

После долгих размышлений я, наконец, понял, что это была проблема управления параллелизмом, которая не позволяла мне одновременно писать в файл excel. Чтобы продолжить свое решение, я использовал выражения для ограничений приоритета, чтобы контролировать, создаются ли листы или нет. Но настоящая проблема в том, что после создания листов пакет не сможет одновременно записать данные на 2 разных листа.

Есть ли способ назначить «Порядок выполнения» для ДПФ? По этой причине я ищу задачу сценария, чтобы, когда счетчик определенного листа равен 0, он не работал, и управление перемещалось в другую ветвь.

Надеюсь, я не запутал вас здесь. Но если у меня есть, я буду рад предоставить более подробную информацию по этому вопросу. Спасибо за прочтение.


person rvphx    schedule 21.12.2012    source источник
comment
Существует целый раздел документации. о потоке управления в SSIS, включая учебные примеры. Это отвечает на ваш вопрос?   -  person Pondlife    schedule 21.12.2012
comment
Сомневаюсь, что там есть что-то для меня. Я уже пробовал свои силы в переменных и ограничениях приоритета. Это плохо работает. Основываясь на подсчете, возвращенном из таблицы, мне нужно контролировать, какое ДПФ выполняется первым, а какое вторым и так далее.   -  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