2013-11-25 122 views
0

我是SSIS包开发中的新成员。自从几天以来,我面临着一个SSIS包的意外问题。SSIS包错误 - 无法将unicode转换为非unicode

我的SSIS包使用两个不同的数据库开发。在Source中,我使用了SQL Server和Oracle,并且在目标中我使用了Oracle。几年后,SSIS Package就像预期的那样工作,但我的客户之一将他的服务器从32位升级到了64位操作系统。

问题在于使用Oracle数据库。早些时候,我使用MSDORA.1连接Oracle数据库,但是微软论坛之一,我读到他们还没有推出MSDORA.1。所以我必须将我的SSIS包与OraOELDB.Oracle.1驱动程序一起转换。在服务器之一中,一切都按预期工作,但是当我部署在客户端的服务器上时,它给了我下面的错误。

<<MY_COLUMN>> cannot convert unicode to non-unicode string data types 

我在Oracle数据库表的所有列中都有VARCHAR2数据类型。

+1

只是因为东西是一个varchar并不意味着它是一个UNICODE varchar。 –

+0

@ MarcB:谢谢。我知道我们必须在SSIS包中添加一些数据类型的对话,但正如我告诉过你的,我只在客户端的服务器上面对这个问题。所以想要了解究竟发生了什么。 – user968441

+1

你说客户升级他们的服务器。所以它与以前不一样。确保服务器中的模式与测试/开发服务器上的模式完全匹配。 –

回答

1

我在更换驱动程序时遇到过相同的问题。 Oracle的OLEDB驱动程序将为您提供SSIS中的“DT_WSTR”类型。其他一些驱动程序(例如Attunity)会为您提供相同字段的“DT_STR”类型。

您需要向您的SSIS包添加一个步骤,将这些字段转换为“DT_STR”数据类型。你需要转换或施放。这个线程包含更多的信息给你:SSIS Package: convert between unicode and non-unicode string data types

+0

IMO事实上,它在一台服务器上“工作”,而不是另一台服务器可能表明不同的驱动程序版本行为不同。 – mikey

+0

另外,我确实需要设置validateExternalMetadata =“False”来解决您可能遇到的有关Oracle的OLEDB提供程序的下一个错误。 – mikey

+0

是的,我是这样做的。我没有在SSIS包中添加新步骤,而是更改了validateExternalMetadata =“False”。它在我的服务器中工作。我不知道客户的系统..它只与财产工作?另外,我在发布问题之前阅读了你提供给好友的相同帖子。 – user968441