我在我的 Windows 7 x64 Professional 机器上使用 OleLoad 创建了一个 MLOAD 作业。它将数据从 Oracle 11g 加载到 Teradata 14 中。当我在本地运行它时,一切都很好。当我将它复制到远程 Windows Server 2003 SP2 机器并运行它时,它失败并显示错误代码 12 和以下消息:
**** 07:30:57 UTY4203 试图访问字段中超出范围的输入数据 'LOCATION_CODE',文件'myjob.amj',记录号'1'。 **** 07:30:57 UTY4023 访问模块警告“33”期间收到 “PreserveRestartInfo”操作:“附件无法识别属性名称 是'
我在远程机器上打开了我的 .amj 文件,看看如果我使用 OleLoad 的 UI 重新生成它会是什么样子。之后在 Beyond Compare 中比较两个 .amj 文件时,我惊讶地发现新的 .amj 非常不同。VARCHAR(214) 更改为 FLOAT,VARCHAR(30) 更改为 VARCHAR(10) 等。
远程机器上的所有 TTU 14 组件都与我在本地安装的组件相匹配。我注意到的唯一区别是 OleLoad 似乎正在使用的 Oracle DLL 版本。Connection Info
当我点击我的 Oracle 连接时,OleLoad 在我的机器上显示以下内容:
Provider
Name: OraOLEDB11.dll
Version: 11.2.0.1.0
DBMS
Name: Oracle
Version: 11.2.0.3.0
在 Windows Server 2003 机器上:
Provider
Name: OraOLEDB.dll
Version: 9.0.1.0.1
DBMS
Name: Oracle
Version: 11g
现在,在任何人面对“嗯,DUH!这是你的问题!”之前,我要补充一点,如果我不得不在我的本地机器上安装新版本的 Oracle,因为我有很多我为个人实用程序创建的 MLOAD 文件(如果您愿意,可以在业务需要临时报告时加载帮助程序)。我无法升级远程服务器上的内容,因为我冒着破坏在那里运行的所有其他 MLOAD 作业的风险。
我只是想提及所有这些以防万一,但我希望这实际上不是问题,并且有一种方法可以让我当前的文件工作而无需卸载/重新安装/升级任何东西。