2015-04-08 4 views
1

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

Как это сделать в SSIS? Мне сказали высшее руководство использовать SSIS, и у меня нет выбора в этом вопросе.

Так .. Я сделал следующее:

  1. создания пакета
  2. Создать Execute SQL Task
    • Созданный запрос внутри ExecuteSQLTask
  3. Создать Foreach Loop Контейнер
    • Создать задачу потока данных внутри контейнера цикла Foreach.
    • Внутри Data Task Flow Я создал OLE DB Источник
    • Connected OLEDBSource в производный столбец
    • Включить DataViewer в связи с этим в шаге 3,3

Похоже DataFlowTask на шаге 3.1 вызывается для всех строк на этапе 2.1

Я хочу, чтобы на этапе 3.1 вызывается DataFlowTask, чтобы вызвать вызов для каждой записи в строке на шаге 2.1. КАК ПРОТИВ всех записей.

Как только это сработает, я намерен установить ExecuteSQLTask внутри ForEachLoopContainer.

enter image description here

+0

Я так смущен на ваш вопрос. Даже изменения были отброшены назад. Возможно, мы начнем заново. В чем проблема, которую вы пытаетесь решить? – billinkc

+0

Я не могу думать о какой-либо причине, по которой вы хотели бы этого. Можете ли вы объяснить, что это за рассуждение. Что делает MyProc? – JodyT

+0

billinkc, это очень простая проблема. MyTable позволяет сказать, что возвращает 3 строки с ColA и colB. Я хочу, чтобы MyProc выполнялся 3 раза со значениями входных параметров ColA и ColB. То, как я это делаю прямо сейчас, заключается в том, что DataFlowTask в ForEachLoopContainer вызывается 9 раз вместо 3-х раз. –

ответ

4

Все, что вам нужно, это Dataflow задач с источником OLEDB и преобразование OLE DB Command.

Источник OLEDB SELECT из таблицы, в которую вы хотите выполнить хранимую процедуру по строкам.

Затем следует преобразование команды OLE DB, которое вызывает хранимую процедуру и передает столбцы из потока данных в параметры хранимой процедуры.

Это приведет к тому, что хранимая процедура будет выполнена один раз для каждой строки таблицы. Вам не нужен исходный SQL-запрос Execute, и вам не нужен цикл For-Each.

+0

Я не могу найти Выполнение преобразования SQL в задаче потока данных где-нибудь там –

+3

Извините, в панели инструментов Dataflow это называется «Команда OLE DB» –

+0

Спасибо (x1000) –