2012-07-08 74 views
1

我們的應用程序是在windows server上使用ASP.NET開發和測試的,使用sql server 2008r2。現在我們需要在red hat linux上將數據庫從Windows移到oracle。在Red Hat上連接到oracle 11g使用asp.net從windows服務器連接到linux

我們還沒有設置測試相同的基礎設施。在此期間我想知道是否有人成功地完成了這種事情。指向任何資源將是一個很大的優勢。

正在改變連接字符串需要做的還是有在Linux中任何特定的配置,讓這唯一的事情嗎?

我會驗證這一點,一旦我得到了環境準備好了,但作爲一個領先地位,如果任何人有任何類似的經驗,做的份額。

在此先感謝。

P.S:對Oracle表結構,storedprocedures等的遷移,我們將使用SQL Developer工具。

+0

從連接角度來看,connectionString更改應該沒問題。您是否使用任何ORM訪問數據庫? – Chandu 2012-07-08 02:40:18

+0

沒有ORM,我們有一個與提供者無關的數據層,可以根據需要插入任何提供者。 – 2012-07-08 02:43:12

+0

然後,我沒有看到連接驗證的任何主要問題,因爲數據訪問層已經建立爲與數據庫不可知的關係。 – Chandu 2012-07-09 01:34:44

回答

0

我想回答我的問題,因爲,遷移到Oracle是不是直線前進,但也有一些技巧,可以幫助任何人遷移到Oracle在Windows或Linux用更少的頭痛。

的SQL開發工具做遷移SQLSERVER架構和數據到Oracle包括storedprocedures,約束好工作的第一件事,觸發器等

它也確實數據類型映射一個良好的工作,並提供選項來重新映射數據類型如果需要。

一些注意事項和注意事項。

  1. Oracle對約30個字符的存儲過程名稱的長度存在限制。這是您需要進行手動重命名的區域,因爲遷移SP或名稱超過30個字符的標識符可能會被截斷。

  2. ,你可能面臨的另一個常見的問題是關於日期插入和格式化。您可以使用以下代碼片段來避免頭痛。常見的錯誤將是「不是有效的月份」。

OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); OracleGlobalization session = conn.GetSessionInfo(); session.DateFormat =「DD.MM.RR」; //根據需要更改格式 conn.SetSessionInfo(session);

  1. 當插入或更新數據或相關錯誤時,最煩人的錯誤是數字轉換的字符。

這裏的問題是,當您爲sql提供程序的命令對象添加參數時,綁定通過名稱發生,但forOracle.DataAccess默認綁定是按位置。這篇文章節省了我很多頭痛。 ODP .NET Parameter problem with uint datatype

你可以做的是設置命令。BindByName = true;

  1. 當遷移返回數據的SP時,oracle會創建一個out參數ref cursor。在構建命令參數時需要注意這一點。

例如,OracleParameter refp = new Oracle.DataAccess.Client.OracleParameter(「cv_1」,OracleDbType.RefCursor,ParameterDirection.InputOutput);

command.Parameters.Add(refp);

  1. 此外,sqlserver需要SP的參數前綴爲「@」,而oracle不會。這可以在數據層輕鬆處理​​。

  2. 此外,由於Oracle中沒有位數據類型,數字(1)工作正常。如果需要,您可能需要將您的bool轉換爲數字。

希望這可以幫助別人避免遷移頭痛。如果我遇到了,我會發布更多的問題。