我的客户使用一个名为IFS (一个ERP系统)的工具,该工具在Oracle上运行(客户运行11.2)。我的工作是使用Microsoft SQL Server Integration Services (或SSIS)从那里提取信息。为此,我们使用Oracle的Attunity驱动程序(默认ODBC太慢)。
今天,我在现有的包中添加了一些新列,方法是将它们添加到现有查询的末尾。令我惊讶的是,当我随后尝试将新列连接到新表时,却没有显示任何结果。结果,列中的值不是我期望的值。在一些冗长的故障排除会议之后,我发现了以下内容。
大多数IFS对象的末尾都包含三列:OBJID、OBJVERSION和OBJKEY。然而,这些列正在发生一些险恶的事情。它们几乎总是按照上面的顺序选择的:

查询Oracle将生成所有有效列和数据:

但是,由于某些原因,OBJID在SSIS中未被识别为有效列,并拒绝显示为列。注意来自Oracle的数据是如何进入结果集的;只是不在正确的列中。来自该列的实际数据显然被完全忽略(在上面的屏幕截图中,该列看起来是空白的。我可能只是选择了一个糟糕的专栏来截图;它仍然证明了我的观点,并突出了问题的核心):

在SSIS中检查"Column“选项卡时,ROWID存在,但复选框未选中。手动检查它不会起任何作用。

我们也使用SSIS从SAP导入另一个名为OBJID的列,而且效果很好。因此,我怀疑问题可能出在Attunity驱动程序上,但似乎无法弄清楚到底发生了什么。
我希望有人以前遇到过这种情况,并有解决办法。
这是一个有趣的问题,让我困惑了好几个小时。我正在解决这个问题,所以没有立即需要解决的问题;问题纯粹是试图满足我自己的好奇心。
如果有任何提示,我将非常感激:)
发布于 2017-09-01 10:18:30
我在使用Attinuity连接器时遇到过一些奇怪的问题,当它被证明是不可靠的时,我已经一劳永逸地放弃了它们。包有时会工作,但在下一次运行时会停止工作。我调整了一些DFT,系统就崩溃了,有时我不得不从头开始重新创建。
你面临的问题也可能是这一点的直接结果。我强烈建议您转到“Oracle Provider for OLE DB”,您可以从这个链接- http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html下载它。
如果有很多包,我理解这将是一项痛苦的任务,但这将是值得的。
https://stackoverflow.com/questions/45821800
复制相似问题