Я пытаюсь получить значение из хранимой процедуры в переменную SSIS, а затем проверяю, могут ли две задачи SSIS работать, если я добавил выражение. Так, например, я пытаюсь использовать эту хранимую процедуру:
Может быть, я даже неправильно настраиваю свойства переменной SSIS, потому что я также не уверен, правильно ли я делаю это для импорта сохраненного значения proc в переменную SSIS. Пожалуйста, скажите мне, если вам нужно больше скриншотов чего-либо еще.
Вот пример задачи:
А вот сценарий Precedence Constraint Editor:
А вот свойства для первой задачи:
Я хочу, чтобы это пошло вперед (или провалилось) в зависимости от этого условия. Но когда я проверяю его, процесс переходит от первой задачи ко второй независимо и показывает только «100% выполнено» для первой задачи и ничего о том, проверил ли он это выражение как истинное или нет. Как я могу сделать такую вещь и что идет не так? У меня есть переменная в SSIS под названием 'orderCount', чтобы получить значение из хранимой процедуры.
источник
@[User::orderCount]
Result Set
странице. simple-talk.com/sql/ssis/…@[User::orderCount]<5?(dt_bool)1:(dt_bool)0
. Не забудьте опубликовать результаты обратно в эту ветку, если они успешны. GL!Ответы:
У вас есть два варианта сделать эту работу. Либо вы можете использовать один набор результатов, либо вы можете использовать параметр OUTPUT. Вы в настоящее время используете ни правильно.
Выходной параметр
Ваша хранимая процедура определяется как имеющая параметр
@OrderCount
с направлениемOUTPUT
Если вы хотите использовать хранимую процедуру в инструменте, SSMS, .NET, что угодно, это будет выглядеть примерно так
Это верно для запуска вышеупомянутого без указания,
OUTPUT
но посмотрите на значение @orderCount. Изменяется с 1435 до 0.То же самое верно, когда вы используете задачу «Выполнение SQL» в службах SSIS. Необходимо указать, что параметр находится в OUTPUT, а также указать его на вкладке «Сопоставления параметров».
Также укажите переменную, которую вы хотите отобразить, и используйте там направление OUTPUT. Здесь я отобразил результат в переменную SSIS типа Int32 с именем
orderCount
Единый набор результатов
У вас есть первая часть этого правильного - вы указали, что набор результатов является одной строкой.
Вы заметите, что я использую,
EXECUTE dbo.TestStoredProcSSVariable ?
поскольку вы должны указать входное значение, иначе вызов proc прервется (по крайней мере, так, как вы его определили). Вы могли бы жестко закодировать значение вместо?
подобного0
Затем на вкладке «Набор результатов» я сопоставляю первый столбец (нулевой порядковый номер) с переменной
orderCountb
Если вы запустите предоставленную хранимую процедуру, вы не получите значение в orderCountb. Почему? Потому что вы ничего не возвращаете из вызова хранимой процедуры. Я добавил заключительное утверждение внутри хранимой процедуры
Сделай сам
Вы можете исследовать любой подход, используя следующий biml. Что такое BIML? Язык разметки Business Intelligence является операционной системой для BI. Почему вы заботитесь об этом, так это о том, что он позволит вам преобразовать некоторый XML в пакет служб SSIS. Все, что вам нужно сделать, это загрузить и установить бесплатный аддон BIDS Helper
После установки BIDS Helper,
Data Source
серверProvider
до реального сервера и приведите в соответствие с вашей версией SSIS. Глядя на ваш скриншот, скорее всего, это будет SQLNCLI10.1Bimlscript.biml
Наслаждайтесь следующим пакетом служб SSIS
источник