Я использую SSIS с подключением АДО.НЕТ к Azure. В SSIS я хочу выполнить процедуру с одним входным и двумя выходными параметрами. Входной параметр является статическим значением. Процедура работает с T-SQL в SSMS.
Я устанавливаю «Выполнение задачи SQL» следующим образом.
Общий
METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2, @INSTANCE, @PROCESS_STATUS
Когда я выполняю «Выполнение задачи SQL», я получил следующую ошибку
Must declare the scalar variable "@". Possible failure reason: Problem with the query, "ResultSet" property not set correctly..
Обновлять
После добавления имени параметра я получаю следующую ошибку:
Execute SQL Task] Error: Executing the query "METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2, @INS..." failed with the following error: "Could not find stored procedure 'METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2, @INSTANCE ,@PROCESS_STATUS'.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Ниже приведен способ настройки ваших параметров и свойств. Установите для свойства IsQueryStoredProcedure значение True, и вместо записи exec ProcName вам просто нужно указать ProcName в sqlstatment, если вы используете ADO.NET Connection.
@Erikhoeven Вы изменили свойство IsQueryStoredProcedure на True?
Да, я изменил это на правду
@Erikhoeven Можете ли вы подтвердить, что вы используете только имя процедуры в SQLStatement вместо EXEC procedureName ?
Поскольку вы используете ADO.NET, вы должны указать имя параметра. Например:
METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2,@param1, @param2
И не используйте индекс параметра на вкладке сопоставления параметров, как показано на снимке экрана.
Дополнительная информация
Вы можете обратиться к следующей официальной документации для получения более подробной информации и примеров:
Попробуйте использовать полное имя:
<database name>.<schema name>.<stored procedure name>
Или добавьте команду USE <database>
перед выполнением хранимой процедуры.
Спасибо за комментарий! Я корректирую вопрос. Теперь я получаю другое сообщение об ошибке!
@Erikhoeven Попробуйте использовать полное имя: <database name>.<schema name>.<stored procedure name>
или добавьте команду USE <database>
перед выполнением хранимой процедуры.
Измените направление ваших параметров на INPUT.
ОП упомянул, что I want to execute a procedure with one input and 2 output parameters
Если у вас есть параметры OUTPUT, тогда набор результатов не должен быть NONE.
Это неправда, параметры OUTPUT не связаны с ResultSet. (ResultSet и параметры вообще не связаны!)
Спасибо за комментарий! Я корректирую вопрос. Теперь я получаю другое сообщение об ошибке!