【问题标题】:SSIS OLE DB Source is missing rows randomly from an Oracle data sourceSSIS OLE DB 源从 Oracle 数据源中随机丢失行
【发布时间】:2020-10-06 16:11:22
【问题描述】:

在将数据从 Oracle 提取到 SQL DB 时,我遇到了一些包的奇怪问题:随机得到所有预期的数据集,或者部分得到它,或者得到一个空数据集。我没有收到任何错误或警告。

详情:

  • 我的源是 Oracle 19C,目标是 SQL Server 2019。
  • 连接是用于 OLE DB(64 位)的 Oracle 提供程序
  • Visual Studio 2019 和 SSIS 15.0.2000.94
  • 在 OLE DB 源中,我使用来自变量的 SQL 命令
  • 我正在记录提取和插入的记录,我发现问题出在提取中。

我已经试过了:

  • 在快速加载//正常加载之间切换
  • 在连接字符串中添加属性UseSessionFormat=True;

如果有任何线索或帮助,我将不胜感激

【问题讨论】:

  • 您确定源数据库中没有发生任何事情吗?某些重建物化视图的过程或某些其他批处理过程会导致您的查询返回与您预期不同的结果集?
  • @JustinCave 是的,因为它是一个静态备份数据库

标签: sql-server oracle ssis etl oledbconnection


【解决方案1】:

我知道这个案例非常具体,但以防万一它可以帮助某人......

问题的根源在于我们连接到 Oracle 的方式。在这个新版本 (19C) 中,必须在查询任何源表之前使用调用 'secpac.set_user' 以继续提取。

为此,我们在数据流之前使用了 SQL 任务。由于连接管理器中的连接属性“保留相同连接”被设置为 false ,我们不断地打开和关闭连接,它在流程中造成了故障。

解决方案:将“保留相同连接”属性设置为 True。然后在第一次需要时打开连接,并为包中的所有任务保持打开状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多