SSIS SQL任务 - “参数名称无法识别”

SSIS SQL任务 - “参数名称无法识别”

问题描述:

我有一个SQL任务需要运行一个简单的更新来更新单个行。SSIS SQL任务 - “参数名称无法识别”

我已经设置的SQLStatement到:

update agency set AgencyLastBatchSeqNo = ? where agencyID = ? 

在我放弃设置参数0和参数1,我知道包含正确值的变量参数映射页。我也正确设置了参数名称值。

在数据库中,列AgencyLastBatchSeqNo是int,AgencyID是一个很大的INT。有没有人有引用来查找SSIS中数据类型映射到的内容?我已经在SHORT中猜测了int和int。

当我跑我得到以下错误的任务:

[Execute SQL Task] Error: Executing the query "update agency set AgencyLastBatchSeqNo = ? where AgencyID = ?" failed with the following error: "Parameter name is unrecognized.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

任何人都可以请有什么建议可能是错的?

谢谢

Rob。

这个问题的答案是改变参数映射屏幕的参数名称值。

给出下面的查询

SELECT Id, AnimalName FROM dbo.Farm WHERE Farm_id = ? 

假设我的参数是一个名为User整型变量:: Farm_id
选择的参数映射屏幕

Variable Name - User::Farm_id 
Direction  - Input 
Data Type  - LONG 
Parameter Name - 0 
Parameter Size - -1 

最初的参数名称下面的值将是“NewParameterName”。只需将其更改为您的可变标记的顺序位置(“?”)

+2

+1救了我!非常感谢! – Legend 2011-10-16 07:26:46

+0

谢谢John,你的回答很好,:) – 2013-02-20 07:39:13

+0

我把参数的名字放在Parameter Name(shock horror)中,并且把我的头发撕掉了! – jhowe 2013-11-12 14:18:34

确保您引用你的价值观,那你没有在列名的拼写错误。

SSIS data types

int = DT_I4 (4 byte integer) = Int32 variable 
bigint = DT_I8 (8 byte integer) = Int64 variable 

你没有提到的一件事是你的连接类型。我假设你没有使用ADO.Net,因为在这种情况下参数标记不是?对于其他类型的连接,参数命名如下:
ADO(不是ADO.Net)连接:参数名称为参数1,参数2 ...
ODBC连接:参数名称为1,2,3 ... OLEDB连接:参数名称0,1,2 ...

对于变量类型(它们是不是在SSIS的任何其他方面的参数映射部分不同)我通常长使用诠释的,我通常离开长度设置为-1。我相信一个Long将会对Int和Bigint都有效。

如果使用超过1点的参数,然后在执行SQL任务窗口去参数映射和参数名设置为0,1,2 ,3 ....取决于参数的数量和参数大小,以-1 .. 这必须有助于解决您的问题。

定义参数映射时,参数名称后的任何尾随空白也会导致此消息。