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”。只需将其更改为您的可变标记的顺序位置(“?”)
确保您引用你的价值观,那你没有在列名的拼写错误。
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 .. 这必须有助于解决您的问题。
定义参数映射时,参数名称后的任何尾随空白也会导致此消息。
+1救了我!非常感谢! – Legend 2011-10-16 07:26:46
谢谢John,你的回答很好,:) – 2013-02-20 07:39:13
我把参数的名字放在Parameter Name(shock horror)中,并且把我的头发撕掉了! – jhowe 2013-11-12 14:18:34