【发布时间】:2021-01-22 07:13:22
【问题描述】:
我想问一下问题可能是什么。我在我的计算机上运行 ssis 包,在那里我将数据从 Oracle 导出到 Excel,一切正常。但是当我将这个包部署到我的 SQL Server 2012 机器上时,包会报错:
列“xx”无法在 unicode 和非 unicode 字符串数据类型之间进行转换。
我的包裹是这样的:
这很简单,在我的电脑上一切正常。
我了解如果我可能在包中添加数据转换,它将修复错误。但我更感兴趣的是为什么这是我的情况而不是服务器上的情况?
【问题讨论】:
-
我建议您在 somewhere 在您的包中进行从 unicode 到非 unicode 的隐式转换。 SSIS 不允许隐式转换,您必须是显式的。要么你需要确保你在整个过程中保持 unicode,要么显式转换。
-
@Larnu 但是为什么它可以直接在我的电脑上运行呢?但是当我将它部署到服务器时,它不起作用吗?那应该是一样的吧?
-
如果环境不同则不会。查阅 SSISDB 中的日志并查看错误发生在哪个阶段,然后您将能够跟踪并准确确定隐式转换发生的位置。
-
@Larnu 错误发生在最后阶段。但我不明白。我从 Oracle 中选择 4 列并将它们以 DT_WSTR 格式插入 Excel。所以我不知道为什么它在非unicode和unicode之间转换时会报错。
标签: excel ssis sql-server-2012 etl