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

时间:2017-04-25 19:20:01

标签: sql sql-server ssis etl sql-server-data-tools

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

  

[OLE DB Source [83]]错误:SQL命令需要一个名为的参数   " @ Sales_person",在参数映射中找不到。

     

[SSIS.Pipeline]错误:OLE DB源未执行预执行阶段和   返回错误代码0xC0207014。

以下是我的OLE DB源编辑器的屏幕截图 enter image description here

enter image description here

enter image description here

我确实在Set Query参数中看到Param direction选项卡,该怎么用?在我的情况下,我将使用InputOutputInputOutput

3 个答案:

答案 0 :(得分:2)

搜索后,我没有找到适用于我的这个问题的解决方案。很多建议就像在执行命令之前添加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并选择@[User::Query]

答案 1 :(得分:0)

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

YYYY  MM DD
2013  12 31

enter image description here

Source - geek with blogs

答案 2 :(得分:0)

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

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

DECLARE @SalesPerson int = ? -- or whatever datatype

EXEC [dbo].[GetSales_Person_Data] @SalesPerson