2013-07-15 48 views
4

我连接到Oracle数据库和连接的作品,但我得到以下错误的一些列:SSIS包:Unicode和非Unicode字符串数据类型之间转换

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

价值RESOURCE_NAME :

  • 对于Oracle:VARCHAR2(200 BYTE)
  • 对于SQL Server:VARCHAR(200 BYTE)

我可以通过Oracle SQL Developer连接到Oracle数据库,没有任何问题。另外,我有SSIS包设置Run64BitRuntime = False

回答

10

Oracle数据类型VARCHAR2似乎是等效于在NVARCHAR SQL Server或在SSIS DT_WSTRReference

你将不得不使用数据转换转换在SQL Server,或CASTCONVERT功能转换。

1

上OLEDB源 - >高级编辑器选项 - >输入/输出columns->输出columns->选择RESOURCE_NAME柱和变化数据类型为DT_WSTR和长度也u能根据需要解决此

2

最简单的方法改变对用记事本打开(该dstx文件)SSIS包,做一个全局查找和=“真”与validateExternalMetadata =“假”validateExternalMetadata的所有实例的替换。

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

+0

我相信'.dtsx'是正确的。在触摸它之前先备份文件。 – Smandoli

2

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

[Command Prompt]> set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 
0

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

1

您可以在SSIS中使用SQL命令并使用CONVERTCAST。如果SSIS仍然因为元数据而给你一个错误。这里是你如何解决它。

  1. 打开高级编辑器。
  2. 在输入和输出属性下,展开源输出。
  3. 扩大输出栏
  4. 选择引起问题的栏。
  5. 转到数据类型属性和更改数据类型到您想要的类型DT_STR,DT_TEXT等
+1

这救了我!谢谢 –

相关问题