我使用“控制流”和“数据流”任务来记录中从Excel数据源读取的行数。然后将数据处理为好表和坏表,这些表中的行被计数,结果通过参数化SQL语句写入统计表。
由于未知的原因,数据似乎被写入了统计表中的错误字段,尽管重新创建了变量并显式地为每个变量设置了列,但我无法修复或识别问题。
设置了三个变量: 1.通过行计数任务从源Excel读取的行总数(约28964行)
然后,通过SQL命令将变体存储在单独的表中,该命令从变量中读取设置的参数。最后的百分比字段是根据总行和错误计算的。
但是,表中的结果似乎是在错误的字段中(见图)。
我已经检查了几次,重新创建了所有的表和变量,但是得到了相同的结果。所有的桌子都可以访问。
有什么想法吗?
任何帮助都是非常感谢的。

发布于 2016-04-13 14:02:30
这是一个访问参数化查询吗?
我从来没有运行过其中一个从SSIS。我知道SSIS在将变量的值映射到查询参数时可能会很奇怪。您注意到您的变量(在变量到参数映射中)的显示顺序与它们如何分配给参数一样吗?
看起来,GoodRows值(28540)将转到P1、BadRows到P2、TotalRows到P3。这是变量在映射中出现的顺序。
这正是我所看到的SSIS所做的奇怪而令人恼火的事情--尽管这并不是专门针对Access语句的。SSIS有时按照参数在映射列表中的出现顺序将变量映射到参数,完全忽略了在“参数名称”列中指定的内容。
尝试删除所有映射,并依次映射变量,以便它们出现在映射表中的order P1、P2、P3中。
发布于 2016-04-13 14:25:43
我建议您为第四个参数创建第四个变量,而不是尝试在ExecuteSQL任务中计算。
不要在参数映射选项卡的“参数名称”列中使用P1、P2和P3,而是尝试使用它们基于零的序号位置。
在查询本身中,对参数使用问号:
...VALUES ("France", ?, ?, ?, ?)换句话说,对于查询中首先使用的参数,名称使用0。下一个参数使用1,下一个参数使用2,依此类推。
如果这不起作用,您可以使用变量构建一个字符串变量,该变量保存要执行的整个SQL字符串,并在ExecuteSQL任务中使用"SQL变量“选项。
发布于 2016-04-13 14:38:18
请尝试将参数映射中的参数名称替换为0、1和2。只需按所需的列顺序使用数字即可。在我的SSIS-项目,这是很好的工作。
https://stackoverflow.com/questions/36600190
复制相似问题