【问题标题】:SSIS Data Flow, ignoring where clause in SQL StatementSSIS 数据流,忽略 SQL 语句中的 where 子句
【发布时间】:2019-02-01 14:47:49
【问题描述】:

使用 Visual Studio 2017 和 SSIS。

从 Oracle 到 SQL Server 的基本数据流。

Oracle 是源 (OLEDB),SQL Server 是目标(OLEDB 也是)。

我正在使用的 SQL 命令

SELECT * FROM CASE_NOTE WHERE
CREATE_DT <= '31-DEC-2010 00.00.00'

但是,数据流忽略 WHERE 并迁移所有行。

此外,数据流将显示 150 万行,其中 750,000 行已提交(源只有 750,000 行)。

这是一种奇怪的行为,我无法找出问题所在。

我尝试过从 OLEDB 转到 ADO.NET 并得到相同的结果。

我已删除 where 子句,但数据流中的 2x 行仍然存在

【问题讨论】:

    标签: oracle ssis


    【解决方案1】:

    解析字符串到日期的问题?

    你可以试试这个方法吗:

    SELECT * FROM CASE_NOTE WHERE CREATE_DT <= '2010-DEC-31'
    

    另一个引人注目的事情是您使用 OLEDB Oracle 源提供程序。

    当您全新安装 SSIS 时,这可能是明显的默认选项,但是,Microsoft 提供了另一个性能更高且更可取的选择:

    Microsoft Connectors for Oracle and Teradata by Attunity for Integration Services (SSIS)

    也许这种替代方案会为您带来更好的 SSIS 体验

    【讨论】:

    • 谢谢,我在使用该查询时收到“Not a Valid Month”错误
    • 然后可能是 12 月而不是 12 月。我调整了答案。它背后的想法是 SSIS 是一个 MS 工具,并且有与区域设置无关的日期格式的概念......但是我在你的问题中添加了 oracle 标签,所以也许 oracle 专业人士也可以提出他们的答案
    • @NicholasLea-Trengrouse,我已经添加了关于 Oracle Attunity 提供者的额外信息。
    • 谢谢,是的,我之前在其他客户网站上使用过 Attunity。它没有安装在这里,所以没有使用它。我会安装它,看看效果如何。
    • 应该是'31-DEC-2010'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2015-01-31
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多