#sql #sql-server #ssis #ado.net #execute-sql-task
#sql #sql-server #ssis #ado.net #execute-sql-task
Вопрос:
Я использую SSIS с ADO.NET подключение к Azure. В SSIS я хочу выполнить процедуру с одним входным и 2 выходными параметрами. Входным параметром является статическое значение. Процедура работает с T-SQL в SSMS.
Я настраиваю «Выполнить задачу SQL» следующим образом
Общая информация
- SQLStatement:
METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2, @INSTANCE, @PROCESS_STATUS
- IsQueryStoredProcedure: True
- ConnectionType: ADO.NET
- Набор результатов: Нет
- SQLSourceType: прямой ввод
Когда я выполняю «Выполнить задачу SQL», я получил следующую ошибку
Необходимо объявить скалярную переменную «@». Возможная причина сбоя: проблема с запросом, свойство «ResultSet» установлено неправильно..
Обновить
После добавления имени параметров я получаю следующую ошибку:
Ошибка выполнения задачи SQL]: выполнение запроса «METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2, @INS …» завершилось ошибкой со следующей ошибкой: «Не удалось найти хранимую процедуру ‘METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2, @INSTANCE ,@PROCESS_STATUS'». Возможные причины сбоя: проблемы с запросом, свойство «ResultSet» отсутствуетустановлено правильно, параметры установлены неправильно или соединение установлено неправильно.
Ответ №1:
Ниже приведен способ настройки ваших параметров и свойств. Установите для свойства IsQueryStoredProcedure значение True, и вместо записи exec ProcName вам просто нужно указать ProcName в sqlstatment, если вы используете ADO.NET Связь.
Комментарии:
1. Спасибо за комментарий! Я корректирую вопрос. Теперь я получаю другое сообщение об ошибке!
2. @Erikhoeven Вы изменили свойство IsQueryStoredProcedure на True?
3. Да, я изменил его на true
4. @Erikhoeven Можете ли вы подтвердить, используете ли вы только имя процедуры в SQLStatement вместо EXECUTIVE ProcedureName ?
Ответ №2:
Измените направление ваших параметров на ВВОД.
Комментарии:
1. В OP упоминалось, что
I want to execute a procedure with one input and 2 output parameters
2. Если у вас есть ВЫХОДНЫЕ параметры, то результирующий набор не должен быть NONE.
3. Это неверно, ВЫХОДНЫЕ параметры не связаны с результирующим набором. (Набор результатов и параметры вообще не связаны!)
Ответ №3:
Поскольку вы используете ADO.NET Вы должны указать имя параметра. В качестве примера:
METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2,@param1, @param2
И не используйте индекс параметра на вкладке сопоставления параметров, как показано на скриншоте.
Дополнительная информация
Вы можете обратиться к следующей официальной документации для получения более подробной информации и примеров:
Обновление 1
Попробуйте использовать полное имя:
<database name>.<schema name>.<stored procedure name>
Или добавьте USE <database>
команду перед выполнением хранимой процедуры.
Комментарии:
1. Спасибо за комментарий! Я корректирую вопрос. Теперь я получаю другое сообщение об ошибке!
2. @Erikhoeven Попробуйте использовать полное имя:
<database name>.<schema name>.<stored procedure name>
или добавьтеUSE <database>
команду перед выполнением хранимой процедуры.