无法将变量值传递给 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 源代码编辑器的截图
我确实在“设置查询参数”中看到了“参数方向”选项卡,它是如何使用的?就我而言,我将使用 Input
或 Output
或 InputOutput
映射有问题。请参阅下面的图片和来源进行更正,您应该将其设置为:
Exec [dbo].[GetSales_Person_Data] @Sales_person = ?
搜索后我没有找到适合我的解决方案。有很多建议,例如在执行命令之前添加 SET NOCOUNT ON
。下面是一些相关链接:
- http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters-in-ssis-ole-db-source-editor.aspx
- http://www.sqlservercentral.com/articles/Data+Flow+Task+(SSIS)/117370/
- http://www.ssistalk.com/2007/10/10/ssis-stored-procedures-and-the-ole-db-source/
你可以做一个解决方法
声明一个 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
执行 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 源代码编辑器的截图
我确实在“设置查询参数”中看到了“参数方向”选项卡,它是如何使用的?就我而言,我将使用 Input
或 Output
或 InputOutput
映射有问题。请参阅下面的图片和来源进行更正,您应该将其设置为:
Exec [dbo].[GetSales_Person_Data] @Sales_person = ?
搜索后我没有找到适合我的解决方案。有很多建议,例如在执行命令之前添加 SET NOCOUNT ON
。下面是一些相关链接:
- http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters-in-ssis-ole-db-source-editor.aspx
- http://www.sqlservercentral.com/articles/Data+Flow+Task+(SSIS)/117370/
- http://www.ssistalk.com/2007/10/10/ssis-stored-procedures-and-the-ole-db-source/
你可以做一个解决方法
声明一个 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