Поток управления службами SSIS и поток данных - PullRequest
13 голосов
/ 15 декабря 2010

Я не совсем понимаю назначение потока управления в пакете служб SSIS. Во всех созданных мною пакетах я просто добавляю компонент потока данных для управления потоком, а затем остальная часть логики располагается в потоке данных.

Я видел примеры более сложных потоков управления (EX: контейнер цикла foreach, который перебирает строки в файле Excel.), Но я ищу пример, где его нельзя было бы также реализовать в потоке данных. Я мог бы так же легко создать соединение с файлом Excel в потоке данных.

Я пытаюсь лучше понять, когда мне нужно (или нужно) реализовать логику в потоке управления, а не использовать поток данных для всего этого.

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

Я пытаюсь понять, как я могу использовать поток управления для этих целей.

Ответы [ 4 ]

19 голосов
/ 15 декабря 2010

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

Более того, в рамках задачи потока данных вы не можете выполнять такие задачи, как итерация, выполнение компонента и т. Д.

Поток управления определяет рабочий процесс для выполнения задач, часто определенного порядка (при условии, что вы включили ограничения приоритета). Пример зацикливания является хорошим примером требования к потоку управления, но вы также можете выполнять отдельные сценарии SQL, вызывать интерфейсы COM, выполнять компоненты .NET или отправлять электронную почту. Сама задача потока управления может фактически не иметь ничего общего с базой данных или файлом.

Задача потока управления сама по себе ничего не делает для данных. Он выполняет то, что само по себе может (или не может) воздействовать на данные где-то. Задача потока данных делает что-то с данными. Это определяет его движение и преобразование.

Должно быть очевидно, когда следует выполнять логику потока управления и логику потока данных, поскольку это будет единственный способ сделать это. В вашем примере вы цитируете контейнер foreach и заявляете, что можете подключиться к электронной таблице в потоке данных. Конечно, для одной таблицы, но как бы вы сделали это для нескольких таблиц в папке? В логике потока данных вы просто не можете!

Надеюсь, это поможет.

10 голосов
/ 15 декабря 2010

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

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

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

3 голосов
/ 15 декабря 2010

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

2 голосов
/ 09 февраля 2014

Попытка дать базовый ответ - Control Flow выполняет операции;например, выполнение оператора SQL или отправка электронного письма.Когда поток управления завершен, он либо вышел из строя, либо завершился успешно.С другой стороны, поток данных находится в элементах потока контейнера и предлагает возможность перемещать, изменять и манипулировать данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...