【问题标题】:SSIS Package: convert between unicode and non-unicode string data typesSSIS 包:在 unicode 和非 unicode 字符串数据类型之间转换
【发布时间】:2013-07-13 18:54:39
【问题描述】:

我正在连接到 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

【问题讨论】:

    标签: sql-server oracle unicode ssis


    【解决方案1】:

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

    我不知道这是否能解决您的问题,但它帮助了我 - 希望其他人也能得到帮助。 (我受到this previous answer to this question BTW 的启发而尝试这样做,只是为了在应得的地方给予信任)。

    【讨论】:

      【解决方案2】:

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

      作品

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 我相信.dtsx 是正确的。在您触摸文件之前对其进行备份。
        【解决方案4】:

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

        1. 打开高级编辑器。
        2. 在输入和输出属性下,展开源输出。
        3. 扩展输出列
        4. 选择导致问题的列。
        5. 转到数据类型属性并将数据类型更改为所需的类型 DT_STR、DT_Text 等。

        【讨论】:

        • 这救了我!谢谢
        • 在哪里可以找到 SSIS 包的高级编辑器?
        • @PatrickSchomburg - 在“数据流”任务中,从“其他源”中拖动 ODBC 源并右键单击该源。您会找到高级编辑器。
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          Oracle 数据类型 VARCHAR2 似乎等同于 SQL Server 中的 NVARCHAR 或 SSIS 中的 DT_WSTRReference

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

          【讨论】:

            【解决方案7】:

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

            [Command Prompt]> set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
            

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                猜你喜欢
                • 2016-05-25
                • 1970-01-01
                • 2017-06-11
                • 2019-06-26
                • 2019-01-07
                • 1970-01-01
                • 2018-08-28
                • 2013-03-10
                • 2017-01-02
                相关资源
                最近更新 更多