2012-10-04 87 views
4

我有一個SSIS包,其中包含傳輸SQL Server對象任務步驟,可將表(架構和數據)從一個數據庫轉移到另一個數據庫。 源和destionation數據庫具有不同的排序規則。 (我不知道它是否是相關信息)SSIS傳輸SQL Server對象任務在傳輸的數據中丟失重音

在某些測試環境中,在傳輸過程中,某些字符(匈牙利語特有重音字符:ő,ű)會轉換爲非重音字符(o,u)。在其他測試環境中一切正常(匈牙利重音字符傳輸良好)。源表列是非Unicode(varchar),我們不能更改它,因爲它是一個遺留系統。

實驗表明此行爲取決於Windows語言環境設置(控制面板/區域和語言/管理/「非Unicode程序的語言」)。如果設置爲匈牙利語,那麼一切都很好,但如果設置爲英語,那麼匈牙利口音就會丟失。

問題是我無法執行特定的Windows語言環境設置,所以我正在尋找一種方法使其不依賴Windows語言環境。

有沒有辦法告訴SSIS在傳輸中使用匈牙利代碼頁?

+0

只是在這裏猜測,如果你改變了你的過程。從傳輸對象步驟中排除具有匈牙利字符的表格。然後在包中寫入相同的傳輸邏輯。當您從表中提取數據時,不是在下拉列表中選擇表,而是編寫自定義選擇語句以將該數據轉換爲nvarchar字段。 *可能*保留字符。如果你想看到一個例子,我可以打個分。 – billinkc

+0

我做了一個解決方法。丟棄SSIS,現在我正在使用存儲過程,通過鏈接服務器進行INSERT INTO + SELECT。即使英語語言環境也能保留口音,所以沒問題。但是我仍然很好奇它是否可以用SSIS製作。 – Vizu

回答

0

在Transer SQL Objects任務的對象頁面中,有一個名爲UseCollat​​ion的選項。如果您選擇此選項,則應使用酸性數據的歸類。

+0

不幸的是,它並沒有解決問題。目標列使用源排序規則創建,但匈牙利口音無論如何都丟失了。我猜想從數據源讀取數據時,發生從Ascii到Unicode的口音丟失轉換。 – Vizu