2011年5月29日 星期日

SSMA for Oracle 進階設定與問題處理

        繼前面一篇 [Oracle轉換至SQL Server的介紹與流程和轉換比率] 轉換完成後,實際檢查資料發現其實有二個問題,一個是資料大小寫造成唯一值的問題,而另一個就是文字亂碼的問題,關於以上的二個問題,我進行了一些調整,但可惜的是大小寫的問題無法處理,所以只好先將資料重覆的部份先行濾除,然後再進行資料的轉換,以下是我處理方式,再分享給大家參考。

1、文字亂碼的問題主要是由於資料型態上,如果你有儲存中文字時,最好設定nvarchar的型態,因為當使用varchar儲存文字時,如果儲存罕用中文字或是其他語系的文字時,會有亂碼的情況發生,所以建議可以將型態設定成nvarchar,藉以減少轉換上的錯誤情況發生。

PS:個人認為將varchar設定成nvarchar的時候會造成查詢成本上的增加,在個人建議上希望可以明確上的設定,如果該欄位只有單純的儲存英文或數字時,可以利用varchar就好,藉以降低欄位的查詢成本。

設定方式:
開啟專案後,先進行專案的設定。
[Tools] -> [Project Settings]













開啟設定檔後,計對varchar與varchar2的型態更改設定為nvarchar(max),再點選ok即可。

設定完成專案的型態對應後,需要再進行表格欄位的型態對應即可。











在設定上需特別注意長度的部份,如果你需要由系統自動根據你的長度進行對應的設定時,只需將Length的打勾取消即可。















最後建議在轉換前可以先將資料庫中的復原模式(Recovery Mode)先切換成 Simple | Bulk_logged,等資料轉換回來後再將模式切回Full,這樣在資料轉換的過程中會比較快。

2、在資料大小寫的問題上,主要是當主鍵值的資料如果有兩筆要新增,分別為ice與ICE,在Oracle是可以的,但是在SQL Server中確是不行,原本我希望可以透過定序的方法進行解決,但是設定後還是一樣無解,所以我目前是透過手動資料濾除的方式進行,我預期會透過SSIS,將這些重覆的資料先行濾除後,再透過批次寫入的方式進行,藉以減少轉換過程中手動操作的次數。

以上的幾篇文章主要是在完整轉換Oracle的心得,希望如果大家有更好的方法時,也可以分享給我參考,謝謝。

相關文章


  1. SQL Server Migration Assistant v5.0 開放下載
  2. Oracle轉換至SQL Server的介紹與流程和轉換比率
  3. SSMA for Oracle 錯誤訊息處理


關鍵字SSMAOracle資料轉換、SQL Server Migration Assistant、SSIS

1 則留言:

  1. 可以先在ORACLE建立一個過濾後的VIEW 然後再Subcribe這個VIEW來代替TABLE,比在SQL SERVER上做法簡單多了。
    對了,我在你SSMA專欄問了一個問題:請問 SQL SSMA可以當成REPLICATION的替換方案嗎?

    回覆刪除