поток управления ssis выполнить команду sql vs data flow sql

У меня есть хранимая процедура (sp_selectClient) с курсором, который выполняет некоторые операции вставки на каждой итерации. В последнем утверждении sp я выбрал результат из таблицы.

Сейчас я создаю пакет ssis, и я новичок в этом. Я нашел самый простой способ, добавив задачу потока данных в поток управления, а затем внутри потока данных я добавил одну source(OLEDB), в которой я установил команду SQL 'EXEC sp_selectClient'. Хранимая процедура не принимает никаких параметров. А затем я сопоставил его с destination(flat file). Мой вопрос: могу ли я сделать это и с Execute SQL Task. Если да, то каковы преимущества и недостатки этого.


person Ajay Rawat    schedule 27.02.2017    source источник


Ответы (2)


Да, вы также можете сделать то же самое с Выполнением задачи SQL.

Команда OLE DB внутри задачи потока данных: всегда будет обрабатывать данные построчно.

Выполнить задачу SQL в потоке управления: будет обрабатывать данные массово.

В чем разница между задачей« Выполнить SQL »и командой OLE DB

person Arockia Nirmal    schedule 27.02.2017

Если ваша хранимая процедура создает набор результатов, вы можете сделать это с помощью «Выполнить задачу SQL» и сохранить наборы результатов внутри переменной типа Object, а затем выполнить цикл по строкам внутри Script Task.

Это полезные ссылки, которые помогают хранить ResultSets внутри переменной и перебирать ее строки внутри Script Task:

Если ваша хранимая процедура не создает никаких наборов результатов (команда Select), рекомендуется использовать задачу «Выполнение SQL».

OLE DB Command выполняет операторы вставки, обновления или удаления для каждой строки, а Execute SQL Task выполняет массовую вставку в этом случае. Это означает, что каждая строка, проходящая через ваш пакет, будет запускаться при переходе к OLE DB Command.

Ссылки:

person Hadi    schedule 27.02.2017