无法将变量值传递给 ssis 中的存储过程

Unable to pass a variable value to a stored procedure in ssis

执行 SSIS 包时,出现以下错误:

[OLE DB Source [83]] Error: The SQL command requires a parameter named "@Sales_person", which is not found in the parameter mapping.

[SSIS.Pipeline] Error: OLE DB Source failed the pre-execute phase and returned error code 0xC0207014.

下面是我的 OLE DB 源代码编辑器的截图

我确实在“设置查询参数”中看到了“参数方向”选项卡,它是如何使用的?就我而言,我将使用 InputOutputInputOutput

映射有问题。请参阅下面的图片和来源进行更正,您应该将其设置为:

Exec [dbo].[GetSales_Person_Data] @Sales_person = ?

Source - geek with blogs

搜索后我没有找到适合我的解决方案。有很多建议,例如在执行命令之前添加 SET NOCOUNT ON 。下面是一些相关链接:

你可以做一个解决方法

声明一个 SSIS 变量 (假设 @[User::Query]

设置@[User::Query]属性EvaluateAsExpression=True并使用下面的表达式

"EXEC [dbo].[GetDales_Person_data] " + @[User::Sales]

如果 @[User::Sales] 是一个字符串使用下面的

"EXEC [dbo].[GetDales_Person_data] '" + @[User::Sales] + "'"

然后在 OLEDB Source 中使用 SQL Command from variable 和 select @[User::Query]

将参数直接映射到 EXEC 语句似乎有问题。

解决此问题的一种方法是使用:

DECLARE @SalesPerson int = ? -- or whatever datatype

EXEC [dbo].[GetSales_Person_Data] @SalesPerson