7

我正在连接到 Oracle 数据库并且连接正常,但某些列出现以下错误:

Description: Column "RESOURCE_NAME" cannot convert between unicode 
and non-unicode string data types.

RESOURCE_NAME 的值:

  • 对于甲骨文:VARCHAR2(200 BYTE)
  • 对于 SQL Server:VARCHAR(200 BYTE)

我可以毫无问题地通过 Oracle SQL Developer 连接到 Oracle DB。另外,我有 SSIS 包设置Run64BitRuntime = False

4

8 回答 8

12

Oracle 数据类型VARCHAR2似乎等同NVARCHAR于 SQL Server 或DT_WSTRSSIS 中的数据类型。参考

您必须使用SQL Server 中的数据转换转换或函数CAST进行转换。CONVERT

于 2013-07-15T19:54:10.117 回答
3

如果软件包在一台机器上工作而在另一台机器上不工作;尝试将 NLS_LANG 设置为正确的语言、区域和字符集并测试包。

[Command Prompt]> set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
于 2015-01-23T07:44:32.463 回答
2

解决此问题的最简单方法是在记事本(dtsx 文件)中打开 SSIS 包,并使用validateExternalMetadata="False"全局查找和替换validateExternalMetadata="True"的所有实例。

注意:我们在通过 SSIS 连接到 Linux 上的 Oracle 11g 数据库时遇到了这个问题。

于 2013-08-22T14:40:57.010 回答
1

在 oledb 源->高级编辑器选项->输入/输出列->输出列->选择 RESOURCE_NAME 列并将数据类型更改为 DT_WSTR 和长度也可以根据需要更改

于 2013-07-16T12:21:48.497 回答
1

您可以在 SSIS 中使用 SQL 命令并使用CONVERTor CAST。如果 SSIS 仍然因为元数据给你一个错误。这是您可以解决的方法。

  1. 打开高级编辑器。
  2. 在输入和输出属性下,展开源输出。
  3. 展开输出列
  4. 选择导致问题的列。
  5. 转到数据类型属性并将数据类型更改为您想要的类型 DT_STR、DT_Text 等。
于 2017-11-21T16:48:13.627 回答
1

您只需双击数据流中的“数据转换”块,然后将每个项目更改为:“Unicode 字符串 [DT_WSTR]”

作品

于 2018-12-14T21:22:46.613 回答
0

如果一切都从上面失败了。创建一个表变量并将数据插入其中。然后选择所有记录作为源。在脚本中使用 SET NOCOUNT ON。

于 2016-09-27T13:36:27.650 回答
0

即使使用 SQL Server 而不是 Oracle,我也遇到了非常相似的问题。就我而言,我使用平面文件作为数据源,所以我只是进入平面文件连接管理器并手动将列类型更改为 Unicode 字符串: 在此处输入图像描述

我不知道这是否会解决您的问题,但它帮助了我 - 希望其他人也会得到帮助。(顺便说一句,我受到这个问题的先前回答的启发,只是为了在应得的地方给予信用)。

于 2020-08-24T22:18:14.123 回答