SSIS问题:存储过程参数/变量

时间:2015-11-05 14:13:02

标签: sql-server visual-studio sql-server-2008 stored-procedures ssis

使用Visual Studio 2008和SQL Server 2008。

使用OLE DB Source到OLE DB Destination,我有一个存储过程,它有几个使用特定ID的参数(例如@BUSINESS_AREA_ID = '32')。如果您想引入所有ID,可以使用-1(例如@BUSINESS_AREA_ID = '-1')。

OLE DB SOURCE

Properties

这些变量设置为VARCHAR(MAX)。当我在SQL Server中使用-1运行它时,它完全正常并返回数千条记录,但是当我在SSIS中设置存储过程时,它运行得非常快(一切都是绿色)但它写入0行。

我检查了数据查看器并且没有返回值,因此我认为问题在于-1变量。我已经尝试使用每种数据类型(字符串,Int32等)设置变量,使用单引号而不使用它们,转换或截断不是问题等等....我被卡住了。我已经设置了更多的存储过程,它们都运行良好,但它们不使用-1功能。有谁知道什么可能是错的?

谢谢大家。

2 个答案:

答案 0 :(得分:3)

看起来您传递的是字符串'-1'而不是-1 int,因此请确保将您的变量设置为字符串。

string variable BUSINESS_AREA_ID

设置完成后,请确保将变量正确映射到传递给OLE DB Source中存储过程的参数。确保遵循此格式并更改存储过程,参数和变量名称。

Correct sproc maaping from http://geekswithblogs.net/stun/archive/2009/03/05/mapping-stored-procedure-parameters-in-ssis-ole-db-source-editor.aspx

答案 1 :(得分:0)

set query parameters对话框的parameters列下,将所有参数名称更改为:

0
1
2
3
etc...

并确保将变量按照它们在查询中出现的顺序分配给占位符。换句话说,参数0是查询中的第一个参数,因此请为其指定适当的变量。