OLE DB Command to Oracle-Unicode /非Unicode转换错误

时间:2019-03-19 18:07:57

标签: oracle unicode ssis oledb etl

当我RDP进入我的程序包时,它在我的台式机和ETL服务器上均可正常运行。但是,当作为作业一部分运行时,我的所有字符串列均出现以下错误:“错误:列“ *** STATUS”无法在Unicode和非Unicode字符串数据类型之间进行转换。

该错误发生在OLE DB命令组件上,该组件更新了Oracle数据库中的表。我在SQL / SSIS端或Oracle端的列都不是Unicode。这是直接导入我的OLD DB Command组件的元数据。

metadata

我验证了有关OLE DB Command组件上的“外部列”与该元数据完全匹配。在Oracle方面,如果插入的列是Unicode(我知道不是),我还尝试在插入之前将列显式转换为Unicode,但这会导致硬错误(红色X)和相同的消息。

这是Oracle模式: enter image description here

命令:

enter image description here

有人知道如何从代理运行它吗?

2 个答案:

答案 0 :(得分:0)

基于以下Oracle支持案例:

以下错误消息的原因是:

  

开发一个在32位操作系统上使用Oracle OLEDB Provider的SSIS软件包,然后将其部署到64位SQL Server安装


可能的解决方法

请注意,我之前没有测试过这些替代方法。

(1)尝试以32位模式运行程序包:

从Visual Studio

    GoTo Project properties >> Debugging >> Run64BitRuntime  = False

enter image description here

从SQL代理

检查以下链接:

(2)安装Oracle x64 oledb提供程序

答案 1 :(得分:0)

在 OLE DB 源上,确保将延迟验证设置为 true。

我将默认代码页设置为 false,代码页为 1252。

我在 32 位和 64 位上都试过了。

还需要使标志validateexternalmetadata = false