2013-11-25 121 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