Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSIS变量和参数写入错误的访问字段_Sql_Visual Studio_Ms Access_Ssis - Fatal编程技术网

Sql SSIS变量和参数写入错误的访问字段

Sql SSIS变量和参数写入错误的访问字段,sql,visual-studio,ms-access,ssis,Sql,Visual Studio,Ms Access,Ssis,我正在使用控制流和数据流任务来记录在VisualStudioSSIS中从Excel数据源读取的行数。然后,数据被处理成好表和坏表,其中的行被计数,结果通过参数化SQL语句写入统计表 由于未知的原因,数据似乎写入了统计表中的错误字段,尽管重新创建了变量并显式设置了每个变量的列,但我无法修复或识别问题 设置了三个变量: 1.通过行计数任务从源Excel读取的行总数(约28964行) 处理后作为“良好”数据写入表的行(大多数源文件,约28540) 处理后作为“坏”数据写入表的行(约424) 然后,变量

我正在使用控制流和数据流任务来记录在VisualStudioSSIS中从Excel数据源读取的行数。然后,数据被处理成好表和坏表,其中的行被计数,结果通过参数化SQL语句写入统计表

由于未知的原因,数据似乎写入了统计表中的错误字段,尽管重新创建了变量并显式设置了每个变量的列,但我无法修复或识别问题

设置了三个变量: 1.通过行计数任务从源Excel读取的行总数(约28964行)

  • 处理后作为“良好”数据写入表的行(大多数源文件,约28540)

  • 处理后作为“坏”数据写入表的行(约424)

  • 然后,变量通过从变量中读取参数集的SQL命令存储在单独的表中。最后一个百分比字段是从总行和错误中计算出来的

    但是,表中的结果似乎位于错误的字段中(见图)

    我已经检查了好几次,并重新创建了所有的表和变量,但得到了相同的结果。所有表都是可访问的

    有什么想法吗

    非常感谢您的帮助


    这是Access参数化查询吗

    我从来没有从SSIS运行过一个。我知道SSI在将变量中的值映射到查询参数时会很奇怪。您是否注意到变量的显示顺序(在变量到参数的映射中)与它们分配给参数的方式相同

    看起来GoodRows值(28540)将被设置为P1,BadRows设置为P2,TotalRows设置为P3。这是变量在映射中出现的顺序

    这正是我所见过的SSI所做的奇怪、令人愤怒的事情——尽管并不是特别针对Access SQL语句。SSI有时会按照变量在映射列表中的显示顺序将变量映射到参数,完全忽略您在参数名称列中指定的内容


    尝试删除所有映射,并逐个映射变量,以便它们在映射表中以P1、P2、P3的顺序出现。

    我建议您为第四个参数创建第四个变量,而不是尝试在ExecuteSQL任务中进行数学运算

    不要在“参数映射”选项卡的“参数名称”列中使用P1、P2和P3,请尝试使用它们从零开始的序号位置

    在查询本身中,对参数使用问号:

    ...VALUES ("France", ?, ?, ?, ?)
    
    换句话说,对于查询中首先使用的参数,使用0作为名称。下一个参数使用1,下一个参数使用2,依此类推


    如果这不起作用,您可以使用变量生成一个字符串变量,该变量保存要执行的整个SQL字符串,并在ExecuteSQL任务中使用“SQL from variable”选项。

    请尝试将参数映射中的参数名替换为0、1和2。
    只需按所需的列顺序使用数字。在我的SSIS项目中,这很好。

    是的,就是这样,很奇怪。非常感谢你的帮助。对于一个专业的程序来说,这是一个多么奇怪的怪癖啊。很高兴能解决它!我认为SSIS将这种行为归咎于数据提供商。我似乎记得它发生在一种类型的SQL Server连接(可能是OLEDB)上,但不发生在另一种类型的SQL Server上,尽管我记不起细节。谢谢,是的,它映射到了参数定义的顺序,而不是SQL代码。谢谢你的帮助。