我的客户使用一个名为 IFS(ERP 系统)的工具,它在 Oracle 上运行(客户运行 11.2)。我的工作是使用 Microsoft SQL Server Integration Services(或 SSIS)从那里提取信息。为此,我们使用了适用于 Oracle 的 Attunity 驱动程序(默认 ODBC 太慢)。
我今天向现有包添加了一些新列,方法是将它们附加到现有查询的尾部。令我惊讶的是,当我尝试将新列加入新表时,它没有显示任何结果。事实证明,列中的值不是我预期的值。一些冗长的故障排除会议之后,我发现了以下内容。
我们的大多数 IFS 对象最后都包含三列;OBJID
, OBJVERSION
, 和OBJKEY
. 不过,这些专栏正在发生一些险恶的事情。它们几乎总是按上述顺序选择:
查询 Oracle 会产生所有有效的列和数据:
但是,由于某种原因OBJID
在 SSIS 中未被识别为有效列,并且拒绝显示为列。注意来自 Oracle 的数据是如何进入结果集的;只是不在右栏中。该列的实际数据显然完全被忽略了(在上面的屏幕截图中,该列看起来是空白的。我可能只是选择了一个错误的列来截图;它仍然证明了我的观点并突出了问题的核心):
在 SSIS 中检查“列”选项卡时,存在 ROWID,但未选中该复选框。手动检查它什么也没做。
我们从 SAP 导入另一个名为 OBJID 的列,同样使用 SSIS,并且工作正常。因此,我怀疑问题可能出在 Attunity 驱动程序上,但似乎无法弄清楚到底发生了什么。
我希望有人可能以前遇到过这种情况,并且可以解决。
这是一个有趣的问题,让我困惑了好几个小时。我正在解决它,所以不需要立即解决;这个问题纯粹是为了满足我自己的好奇心。
我会感谢/感谢任何提示:)