2013-07-15 44 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

這救了我!謝謝 –

相關問題