共用方式為


轉換 Oracle 結構描述 (OracleToSQL)

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

轉換程序

轉換資料庫物件會從 Oracle 取得物件定義、將其轉換為類似的 SQL Server 物件,然後將此資訊載入適 SSMA 中繼資料。 此程序不會將資訊載入 SQL Server 的執行個體。 然後,您可以使用 SQL Server Metadata Explorer 來檢視物件及其屬性。

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

設定轉換選項

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

轉換結果

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

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

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

在某些情況下,必須在自發交易中呼叫預存程序。 在此情況下,SSMA 會建立兩個預存程序:一個會實作程序,另一個則用來呼叫實作預存程序。
套件 SSMA 會建立一組預存程序和函式,而這些預存程序和函式是以類似的物件名稱來統一管理。
序列 SSMA 會建立序列物件 (SQL Server 2012 或 SQL Server 2014) 或模擬 Oracle 序列。
具有相依物件 (例如索引和觸發程序) 的資料表 SSMA 會建立具有相依物件的資料表。
使用相依物件 (例如觸發程序) 來檢視 SSMA 會建立具有相依物件的檢視。
具體化檢視 SSMA 會在 SQL 伺服器上建立索引檢視,但有一些例外狀況。 如果具體化檢視包含下列一或多個以下結構,則轉換會失敗:

使用者定義函數

SELECT、WHERE 或 GROUP BY 子句中的不具決定性欄位 / 函式 / 運算式

在 SELECT *、WHERE 或 GROUP BY 子句中使用 Float 資料行 (先前問題的特殊案例)

自訂資料類型 (包括巢狀表格)

COUNT(distinct <field>)

FETCH

OUTER 聯結 (LEFT、RIGHT 或 FULL)

子查詢、其他檢視

OVER、RANK、LEAD、LOG

MIN、MAX

UNION、MINUS、INTERSECT

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 Database 物件

轉換 Oracle Database 物件時,必須先選取要轉換的物件,再讓 SSMA 執行轉換。 若要在轉換期間檢視輸出訊息,請在 [檢視] 功能表上點選 [輸出]。

將 Oracle 物件轉換成 SQL Server 語法

  1. 在 [Oracle Metadata Explorer] 中,展開 Oracle 伺服器,然後展開 [結構描述]。

  2. 選取要轉換的物件:

    • 若要轉換所有結構描述,請勾選 [結構描述] 旁的核取方塊。

    • 若要轉換或省略某個資料庫,請勾選結構描述名稱旁邊的核取方塊。

    • 若要轉換或省略某個物件類別,請展開結構描述,然後勾選或清除類別旁的核取方塊。

    • 若要轉換或省略個別物件,請展開類別資料夾,然後勾選或清除物件旁邊的核取方塊。

  3. 若要轉換所有選取的物件,請以滑鼠右鍵按一下 [結構描述],然後選取 [轉換結構描述]。

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

檢視轉換問題

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

檢視摘要報告

  1. 在 [Oracle 中繼資料總管] 中,選取 [結構描述]。

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

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

    • 若要檢視個別結構描述的報告,請在 Oracle Metadata Explorer 中選取結構描述。

    • 若要檢視個別物件的報告,請在 Oracle Metadata Explorer 中選取物件。 發生轉換問題的物件會帶有紅色錯誤圖示。

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

檢視個別轉換問題

  1. 在 Oracle Metadata Explorer 中,展開 [結構描述]。

  2. 展開顯示紅色錯誤圖示的結構描述。

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

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

  5. 在右側窗格中,按一下 [報告] 索引標籤。

  6. [報告] 索引標籤頂端有一個下拉式清單。 如果清單顯示 [統計資料],請將選取項目變更為 [來源]。

    SSMA 會顯示原始程式碼,程式碼正上方有數個按鈕。

  7. 按一下 [下一個問題] 按鈕。 這是紅色錯誤圖示,具有指向右側的箭頭。

    SSMA 會反白顯示在目前物件中找到的第一個有問題的原始程式碼。

對於無法轉換的每個項目,您必須決定要對該物件執行的動作:

  • 您可以在 [SQL] 索引標籤上修改程序的原始程式碼。

  • 您可以修改 Oracle Database 中的物件,以移除或修改有問題的程式碼。 若要將更新的程式碼載入 SSMA,您必須更新中繼資料。 如需詳細資訊,請參閱連線到 Oracle Database (OracleToSQL)

  • 您可以將物件排除在移轉作業之外。 在 SQL Server Metadata Explorer 和 Oracle Metadata Explorer 中,清除項目旁的核取方塊,再將物件載入 SQL Server 並從 Oracle 移轉資料。

後續步驟

移轉程序的下一個步驟是將已轉換的物件載入 SQL Server

另請參閱

將 Oracle 資料庫移轉到 SQL Server (OracleToSQL)