Подтвердить что ты не робот

Выборочно выполнять задачу в потоке управления SIS

У меня есть пакет SSIS с потоком управления, содержащий последовательность выполнения sql-задач в последовательности.

Мне нужно проверить флаг для каждой задачи и запустить задачу, если она установлена, если не пропустить и перейти к следующему.

Каждая из этих задач выполняет хранимую процедуру. Поэтому я могу проверить proc и "Return", если не установлен. Я искал решение "SSIS", если оно есть.

ТИА

PS

4b9b3361

Ответ 1

Между задачами управления потоком, нажмите стрелку и выберите "Изменить". Когда вы это сделаете, вы получите диалоговое окно, в котором вы можете проверить "ограничение" (успех, завершение или сбой) задачи, "выражение" (т.е. Вы можете вернуть свою задачу выполнения sql в значение, сохранить это значение в переменную и проверить значение этой переменной в выражении, чтобы определить, следует ли продолжать путь, который вы редактируете), "выражение и ограничение" и "выражение или ограничение". Эти последние два являются теми же, за исключением логики. "Выражение и ограничение" требует истинного условия как для выражения, так и для ограничения, "выражение или ограничение" требует истинного условия только для одного выражения и ограничения.

Ответ 2

Я думаю, что ваш вопрос был таким же, как мой, в котором я хотел контролировать выполнение задачи "inline" в моем потоке управления.

Самый простой способ, который я нашел, не включает выражение на коннекторах данных между объектами потока управления, а скорее использует выражения для самого объекта управления и установку значения "Отключить" с помощью выражения. Таким образом, при выполнении объект либо пропускается, либо не основывается на оценке выражения.

В качестве примера я хотел выполнить "Execute SQL Task" для удаления моих индексов на основе того, была ли переменная с именем "ExtractType" равной "Full". Если бы это было тогда, я хотел бы удалить индексы на своих таблицах, прежде чем делать свою полную загрузку.

Ответ 3

При желании я читаю в кучу плоских файлов. Всего может быть до 10 файлов, и файлы (если они существуют для текущего запуска) являются предсказуемыми.

Я назначил простое число каждому файлу, а затем, читая их, умножаю переменную с именем FilesIn на каждое простое число. Затем, используя подход Amos Wood, для каждого из этапов обработки я отключаю шаг if (@[User :: FilesIn]% & lt; PrimeForThisFile & gt;! = 0).

Есть несколько шагов для обработки каждого файла, так что это быстрый способ проверить, должен ли шаг выполняться в зависимости от того, существует ли конкретный файл.

Это имеет практический предел, так как гораздо больше файлов, чем у меня, и вы бы перегружали даже BigInt, но для того, что я делаю, это быстрый способ на основе математики (в отличие от сравнения строк), чтобы проверить, каждый ли файл есть, снова и снова. Мне не нужно ничего анализировать, мне не нужно перебирать массив, мне не нужно каждый раз читать каталог, мне не нужно помещать имена файлов во временную таблицу или любые другие подобные бред какой то.