19

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

В моем старом пакете DTS я делаю это:

EXEC myStoredProcedure ?, ?, ? 

... а потом я сопоставляются параметры. Однако в SSIS я не могу понять, как это сделать.

У меня есть задача потока данных, в которой сначала выполняется запрос данных. Он передает данные в пункт назначения OLE DB. Я установил режим доступа к данным на «команду SQL», но когда я пытаюсь включить SQL выше, я получаю «Invalid Parameter Count», когда он анализирует SQL. Я не могу добраться до экрана Mappings. Есть идеи?

+1

Почему такая простая задача кажется такой сложной с MS 'Data Transfer Utilities ??? Это было легко сделать в DTS, если потребовалось время для установки бесполезных сопоставлений. –

+0

Я уверен, что вы можете сделать это на уровне потока данных, на самом деле я уверен, что я это сделал, но не могу вспомнить, как это сделать. Как еще вы должны, например, запускать процесс INSERT для неудачных поисков –

ответ

13

в потоке данных, то OLE DB Command может быть использовано для выполнения SQL заявления для каждой строки в потоке данных - (MSDN documentation)

В качестве альтернативы, вы можете сохранить результат исходного набора в переменном типе объекта данных и используйте контейнер Foreach Loop в потоке управления (пример here).

+0

Я думаю, что это работает, но я получаю ошибку преобразования Unicode ... и я не совсем уверен, как это исправить. –

+0

Трудно быть уверенным, не более подробно. Использует ли ваш SP параметры char или varchar? –

+0

... это должны быть параметры char и/или varchar –

7

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

Для того, чтобы передавать параметры, используйте символы? синтаксис и указать параметры в разделе «Сопоставление параметров».

Хороший пример можно найти here.

+0

Итак, как мне передать данные в задачу выполнения SQL? Я не вижу полезных параметров в разделе параметров. Только параметры «System :: xxxxx». –

+0

Этот пример не помогает мне, как только двум конкретным сценариям. В частности, я пытаюсь запустить инструкцию select и передавать каждую строку в хранимую процедуру на другом сервере. Вы знаете, как это сделать? –

+0

^Это действительно работает. Вам нужно определить свои СОБСТВЕННЫЕ переменные, а не использовать переменные уровня SYSTEM. Вы должны использовать «Execute SQL Task» в разделе «Flow Flow» вашего пакета. Возьмите редактор переменных и в верхнем левом углу добавьте свои собственные переменные уровня USER. – D3vtr0n