SSIS 2017“执行SQL任务”失败找不到存储过程

时间:2019-04-08 07:56:04

标签: sql sql-server ssis ado.net execute-sql-task

我正在使用SSIS和与Azure的 ADO.NET 连接。在SSIS中,我想用一个输入和两个输出参数执行一个过程。输入参数是静态值。该过程与SSMS中的T-SQL一起使用。

我按照以下步骤设置“执行SQL任务”

常规

  • SQLStatement:METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2, @INSTANCE, @PROCESS_STATUS
  • IsQueryStoredProcedure:正确
  • ConnectionType:ADO.NET
  • 结果集:无
  • SQLSourceType:直接输入

参数映射 enter image description here

enter image description here

当我执行“执行SQL任务”时,出现以下错误

  
    

必须声明标量变量“ @”。可能的失败原因:查询问题,“ ResultSet”属性设置不正确。

  

更新

添加参数名称后,我收到以下错误:

  

执行SQL任务]错误:执行查询“ METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2,@ INS ...”失败,并出现以下错误:“找不到存储过程'METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2,@INSTANCE,@ PROCESS_STATUS'。” 。可能的失败原因:查询问题,“ ResultSet”属性设置不正确,参数设置不正确或连接建立不正确。

3 个答案:

答案 0 :(得分:1)

下面是配置参数和属性的方法。将IsQueryStoredProcedure属性设置为True,如果使用ADO.NET连接,则不必在sqlstat中提供ProcName,而不必编写exec ProcName。

enter image description here

enter image description here

答案 1 :(得分:0)

由于使用的是ADO.NET,因此必须指定参数名称。例如:

METRICE_VAULT.GP_1001_GENERIC_PRE_PROCESS 2,@param1, @param2

并且不要如屏幕截图所示在参数映射选项卡中使用参数索引。

其他信息

有关更多详细信息和示例,请参考以下官方文档:

更新1

尝试使用完全限定的名称:

<database name>.<schema name>.<stored procedure name> 

或在执行存储过程之前添加USE <database>命令。

答案 2 :(得分:0)

将参数的方向更改为INPUT。