当我RDP进入我的程序包时,它在我的台式机和ETL服务器上均可正常运行。但是,当作为作业一部分运行时,我的所有字符串列均出现以下错误:“错误:列“ *** STATUS”无法在Unicode和非Unicode字符串数据类型之间进行转换。
该错误发生在OLE DB命令组件上,该组件更新了Oracle数据库中的表。我在SQL / SSIS端或Oracle端的列都不是Unicode。这是直接导入我的OLD DB Command组件的元数据。
我验证了有关OLE DB Command组件上的“外部列”与该元数据完全匹配。在Oracle方面,如果插入的列是Unicode(我知道不是),我还尝试在插入之前将列显式转换为Unicode,但这会导致硬错误(红色X)和相同的消息。
命令:
有人知道如何从代理运行它吗?
答案 0 :(得分:0)
基于以下Oracle支持案例:
以下错误消息的原因是:
开发一个在32位操作系统上使用Oracle OLEDB Provider的SSIS软件包,然后将其部署到64位SQL Server安装
请注意,我之前没有测试过这些替代方法。
(1)尝试以32位模式运行程序包:
从Visual Studio
GoTo Project properties >> Debugging >> Run64BitRuntime = False
从SQL代理
检查以下链接:
(2)安装Oracle x64 oledb提供程序
答案 1 :(得分:0)
在 OLE DB 源上,确保将延迟验证设置为 true。
我将默认代码页设置为 false,代码页为 1252。
我在 32 位和 64 位上都试过了。
还需要使标志validateexternalmetadata = false