2014-09-26 79 views
0

我有一個奇怪的問題,在DEV環境中一切正常,但在PROD中,SSIS報告有關從unicode轉換爲非unicode的錯誤。此錯誤發生在OLE DB源任務級別。所以,我甚至沒有機會使用Derived Columns來執行轉換。使用Oracle OLE DB源的SSIS(VS2008)

我們在生產服務器上安裝了BIDS,並且該任務被標記爲出錯。當我嘗試打開屬性時,它告訴我元數據與DTSX文件中的元數據不同。當我接受報價自動更正時,所有錯誤的列輸入類型(外部和輸出列)的類型從DT_WSTR切換到DT_STR

所涉及的表的描述在DEV和PROD(列的相同類型)中是相同的。如果我查詢字符集,它們在兩種環境中都是相同的。

爲了您的信息,這裏是查詢:

SELECT * 
FROM v$nls_parameters 
where parameter 
     like '%CHARACTERSET' 

返回:

NLS_CHARACTERSET     WE8MSWIN1252 
NLS_NCHAR_CHARACTERSET    AL16UTF16 

兩個環境。

任何想法解決這個?

謝謝 米歇爾

+1

聞起來很像你有不同版本的驅動程序安裝/配置。很久以前,與MySQL驅動程序出現類似的問題。版本X.Y.Z.13是針對開發的。服務器獲得了驅動程序版本X.Y.Z.14和繁榮,無效的元數據。 – billinkc 2014-09-26 15:51:42

+0

對不起,如果我花時間回答,但你是對的,這是問題所在。非常感謝! – user2343647 2014-09-29 17:46:57

回答

1

你很可能運行到/安裝的驅動程序在不同的機器配置的差異。

很久以前,我遇到了MySQL驅動程序的類似問題。版本X.Y.Z.13是針對開發的。服務器獲得了驅動程序版本X.Y.Z.14和繁榮,無效的元數據。

您將需要檢查Dev和prod服務器版本的元數據,並確定哪一個適合您。在我的情況下,開發驅動程序生成varchar(非Unicode)字符串,並與目標系統對齊,而他們在prod中安裝的新驅動程序推導出它們應該是nvarchar(unicode)字符串。將nvarchar重新轉換爲varchar或更改表格超出了項目允許的時間範圍以及數據管理團隊用於創建表格的瘋狂規則。