【问题标题】:SSIS Variables and Parameters written to wrong Access FieldsSSIS 变量和参数写入错误的访问字段
【发布时间】:2016-04-13 13:38:08
【问题描述】:

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

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

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

  1. 处理后作为“好”数据写入表的行(大部分源文件,大约 28,540)

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

然后通过从变量中读取参数集的 SQL 命令将变量存储在单独的表中。最终百分比字段是根据总行数和错误计算得出的。

但是,表格中的结果似乎在错误的字段中(见图)。

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

有什么想法吗?

非常感谢任何帮助。

【问题讨论】:

    标签: sql visual-studio ms-access ssis


    【解决方案1】:

    这是一个 Access 参数化查询吗?

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

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

    这正是我所见过的 SSIS 所做的奇怪而令人愤怒的事情——尽管不是专门针对 Access SQL 语句。 SSIS 有时会将您的变量按照它们在映射列表中出现的顺序映射到参数,完全忽略您在“参数名称”列中指定的内容

    尝试删除所有映射,将变量一个接一个地映射,使它们在映射表中按P1、P2、P3的顺序出现。

    【讨论】:

    • 是的,很奇怪。非常感谢您的出色帮助。对于专业程序来说,这是多么奇怪的怪癖。
    • 很高兴修复了它!我认为 SSIS 将这种行为归咎于数据提供者。我似乎记得它发生在一种 SQL Server 连接(可能是 OLEDB)上,但不是另一种(SQL Server),虽然我不记得细节了。
    【解决方案2】:

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

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

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

    ...VALUES ("France", ?, ?, ?, ?)
    

    也就是说,对于查询中第一个使用的参数,使用 0 作为名称。下一个参数使用 1,下一个参数使用 2,以此类推。

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

    【讨论】:

    • 感谢您的帮助。
    【解决方案3】:

    请尝试将参数映射中的参数名称替换为 0、1 和 2。 只需按您需要的列顺序使用数字。在我的 SSIS 项目中,这工作正常。

    【讨论】:

    • 谢谢,是的,它映射到定义参数的顺序而不是 SQL 代码。
    猜你喜欢
    • 2022-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 2012-11-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多