共用方式為


轉換 Oracle 架構 (OracleToSQL)

連線到 Oracle、連線到 SQL Server 並設定項目和資料對應選項之後,您可以將 Oracle 資料庫物件轉換成 SQL Server 資料庫物件。

轉換程序

轉換資料庫物件會從 Oracle 取得物件定義、將它們轉換成類似的 SQL Server 對象,然後將此資訊載入 Oracle Microsoft SQL Server 移轉小幫手 (SSMA) 的元數據。 此程序不會將資訊載入 SQL Server 的執行個體。 然後,您可以使用 SQL Server 元數據總管來檢視物件及其屬性。

在轉換期間,SSMA 會將輸出訊息列印至 [ 輸出 ] 窗格,並將錯誤訊息列印至 [ 錯誤清單 ] 窗格。 使用輸出和錯誤資訊來判斷您是否必須修改 Oracle 資料庫或轉換程式,以取得所需的轉換結果。

設定轉換選項

轉換物件前,請先檢閱 [專案設定] 對話方塊中的專案轉換選項。 使用此對話框,您可以決定 SSMA 如何轉換函式和全域變數。 如需詳細資訊,請參閱專案設定 (轉換)

轉換結果

下表顯示哪些 Oracle 物件已轉換,以及產生的 SQL Server 物件:

Oracle 物件 產生的 SQL Server 物件
Functions 如果函式可以直接轉換為 Transact-SQL,SSMA 會建立函式。

在某些情況下,函式必須轉換成預存程序。 在此情況下,SSMA 會建立一個預存程序,以及呼叫預存程序的函式。
程序 如果程序可以直接轉換為 Transact-SQL,SSMA 會建立一個預存程序。

在某些情況下,必須在自發交易中呼叫預存程式。 在此情況下,SSMA 會建立兩個預存程式:一個實作程式,另一個會呼叫實作的程式。
套件 SSMA 會建立一組由類似物件名稱統一的預存程式和函式。
序列 SSMA 會建立序列物件 (SQL Server 2012 (11.x) 和更新版本) 或模擬 Oracle 序列。
具有相依對象的數據表,例如索引和觸發程式 SSMA 會建立具有相依物件的資料表。
具有相依物件的視圖,例如觸發器 SSMA 會建立具有相依對象的檢視。
具象化視圖 SSMA 會在 SQL Server 上建立索引檢視表,但有一些例外狀況。 如果具體化檢視包含下列一或多個建構,轉換就會失敗:

用戶定義函數。

SELECTWHEREGROUP BY 子句中的非決定性欄位、函式或表示式。

SELECT*WHEREGROUP BY 子句中的 Float 列的使用(先前問題的特殊案例)。

自訂數據類型(包括巢狀數據表)。

COUNT (相異 <欄位>)。

FETCH

OUTER 聯結 (LEFTRIGHTFULL)。

子查詢,其他檢視。

OVERRANKLEADLOG

MINMAX

UNION、、MINUSINTERSECT

HAVING
觸發程序 SSMA 會根據以下規則建立觸發程序:

BEFORE 觸發程式會轉換成 INSTEAD OF 觸發程式。

AFTER 觸發程式會轉換成 AFTER 觸發程式。

INSTEAD OF 觸發程式會轉換成 INSTEAD OF 觸發程式。 相同作業上定義的多個 INSTEAD OF 觸發程式會合併成一個觸發程式。

列層級的觸發程式是透過使用指標來模擬的。

複合觸發條件會轉換成 INSTEAD OF 觸發條件。 多個組合觸發器會合併成單一觸發器。

層疊觸發程式會轉換成多個個別觸發程式。
同義詞 針對下列物件類型建立同義字:

數據表和對象數據表。
檢視與物件視圖。
預存程式。
函數。

下列物件的同義字已解析後取代為直接物件參照:

序列。
包裹。
Java 類別架構物件。
使用者定義的物件類型。

無法移轉的同義字會被標示為錯誤。

不會為具體化檢視建立同義詞。
用戶定義型別 SSMA 不支援轉換使用者定義型別。 使用者定義的類型,包括在 PL/SQL 程式中的使用方式,會根據以下規則被標示為特殊的轉換錯誤:

使用者定義型別的資料表欄會轉換成VARCHAR(8000)

將使用者定義型別的參數轉換成 VARCHAR(8000),用於預存程序或函數。

PL/SQL 區塊中使用者定義型別的變數會被轉換成VARCHAR(8000)

對象數據表會轉換成標準數據表。

對象檢視會轉換成標準檢視。

轉換 Oracle 資料庫物件

若要轉換 Oracle 資料庫物件,請選取您要轉換的物件,然後讓 SSMA 執行轉換。 若要在轉換期間檢視輸出訊息,請在 [檢視] 功能表上選取 [輸出]。

將 Oracle 物件轉換為 SQL Server 語法

  1. 在 [Oracle 元數據總管] 中,展開 [Oracle 伺服器],然後展開 [架構]。

  2. 選取要轉換的物件:

    • 若要轉換所有架構,請選取 [架構] 旁的複選框。
    • 若要轉換或省略資料庫,請選取架構名稱旁的複選框。
    • 若要轉換或省略某個物件類別,請展開結構描述,然後選取或清除類別旁的核取方塊。
    • 若要轉換或省略個別物件,請展開類別資料夾,然後選取或清除物件旁邊的核取方塊。
  3. 若要轉換所有選取的物件,請以滑鼠右鍵按兩下 [ 架構] ,然後選取 [ 轉換架構]。

    您也能以滑鼠右鍵按一下物件或其父資料夾,然後選取 [轉換結構描述],以轉換個別物件或物件類別。

檢視轉換問題

某些 Oracle 物件可能無法轉換。 您可以檢視摘要轉換報表來判斷轉換成功率。

檢視摘要報告

  1. 在 Oracle 元數據瀏覽器中,選取 架構

  2. 在右側窗格中,選取 [報告] 索引標籤。

    此報表會顯示已評估或轉換之所有資料庫物件的摘要評估報告。 您也可以檢視個別物件的摘要報表。

    • 若要檢視個別架構的報表,請在 Oracle 元數據總管中選取架構。
    • 若要檢視個別物件的報表,請在 Oracle 元數據總管中選取物件。 發生轉換問題的物件會帶有紅色錯誤圖示。

針對轉換失敗的物件,您可以檢視導致轉換失敗的語法。

檢視個別轉換問題

  1. 在 [Oracle 元數據總管] 中,展開 架構

  2. 展開具有紅色錯誤圖示的架構。

  3. 在架構下,展開具有紅色錯誤圖示的資料夾。

  4. 選取具有紅色錯誤圖示的物件。

  5. 在右側窗格中,選取 [報告] 索引標籤。

  6. [ 報表 ] 索引標籤頂端有下拉式清單。如果清單顯示 [統計數據],請將選取範圍變更為 [來源]。 SSMA 會顯示原始程式碼,程式碼正上方有數個按鈕。

  7. 選取 [ 下一個問題 ] 按鈕,其會顯示紅色錯誤圖示,其中包含指向右側的箭號。 SSMA 會突顯顯示在目前物件中找到的第一個有問題的原始程式碼。

針對無法轉換的每個項目,請選擇您想對該物件執行什麼操作:

  • 您可以在 [SQL ] 索引標籤上修改程式的原始碼。
  • 您可以修改 Oracle 資料庫中的物件,以移除或修改有問題的程式代碼。 若要將更新的程式碼載入 SSMA,您必須更新中繼資料。 如需詳細資訊,請參閱 連線到 Oracle 資料庫
  • 您可以將物件排除在移轉作業之外。 在 [SQL Server 元數據總管] 和 [Oracle 元數據總管] 中,清除專案旁的複選框。 然後將物件載入 SQL Server,並從 Oracle 移轉數據。