我想回答我的問題,因爲,遷移到Oracle是不是直線前進,但也有一些技巧,可以幫助任何人遷移到Oracle在Windows或Linux用更少的頭痛。
的SQL開發工具做遷移SQLSERVER架構和數據到Oracle包括storedprocedures,約束好工作的第一件事,觸發器等
它也確實數據類型映射一個良好的工作,並提供選項來重新映射數據類型如果需要。
一些注意事項和注意事項。
Oracle對約30個字符的存儲過程名稱的長度存在限制。這是您需要進行手動重命名的區域,因爲遷移SP或名稱超過30個字符的標識符可能會被截斷。
,你可能面臨的另一個常見的問題是關於日期插入和格式化。您可以使用以下代碼片段來避免頭痛。常見的錯誤將是「不是有效的月份」。
OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); OracleGlobalization session = conn.GetSessionInfo(); session.DateFormat =「DD.MM.RR」; //根據需要更改格式 conn.SetSessionInfo(session);
- 當插入或更新數據或相關錯誤時,最煩人的錯誤是數字轉換的字符。
這裏的問題是,當您爲sql提供程序的命令對象添加參數時,綁定通過名稱發生,但forOracle.DataAccess默認綁定是按位置。這篇文章節省了我很多頭痛。 ODP .NET Parameter problem with uint datatype
你可以做的是設置命令。BindByName = true;
- 當遷移返回數據的SP時,oracle會創建一個out參數ref cursor。在構建命令參數時需要注意這一點。
例如,OracleParameter refp = new Oracle.DataAccess.Client.OracleParameter(「cv_1」,OracleDbType.RefCursor,ParameterDirection.InputOutput);
command.Parameters.Add(refp);
此外,sqlserver需要SP的參數前綴爲「@」,而oracle不會。這可以在數據層輕鬆處理。
此外,由於Oracle中沒有位數據類型,數字(1)工作正常。如果需要,您可能需要將您的bool轉換爲數字。
希望這可以幫助別人避免遷移頭痛。如果我遇到了,我會發布更多的問題。
從連接角度來看,connectionString更改應該沒問題。您是否使用任何ORM訪問數據庫? – Chandu 2012-07-08 02:40:18
沒有ORM,我們有一個與提供者無關的數據層,可以根據需要插入任何提供者。 – 2012-07-08 02:43:12
然後,我沒有看到連接驗證的任何主要問題,因爲數據訪問層已經建立爲與數據庫不可知的關係。 – Chandu 2012-07-09 01:34:44