轉換 MySQL 資料庫 (MySQLToSQL)

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

轉換程序

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

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

設定轉換選項

轉換物件前,請先檢閱 [專案設定] 對話方塊中的專案轉換選項。 您可以使用此對話方塊來設定 SSMA 轉換資料表和索引的方式。 如需其他資訊,請參閱專案設定 (轉換) (MySQLToSQL)

轉換結果

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

MySQL 物件 產生的 SQL Server 物件
具有相依物件 (例如索引) 的資料表 SSMA 會建立具有相依物件的資料表。 資料表會隨所有索引和限制式進行轉換。 索引會轉換成個別 SQL Server 物件。

空間資料類型對應只能在資料表節點層級執行。

如需資料表轉換設定的詳細資訊,請參閱轉換設定
函式 如果函式可以直接轉換為 Transact-SQL,SSMA 會建立函式。 在某些情況下,函式必須轉換成預存程序。 您可以在專案設定中使用函數轉換來完成此作業。 在此情況下,SSMA 會建立一個預存程序,以及呼叫預存程序的函式。

指定選擇:

- 根據專案設定進行轉換
- 轉換成函數
- 轉換成預存程序

如需函數轉換設定的詳細資訊,請參閱轉換設定
程序 如果程序可以直接轉換為 Transact-SQL,SSMA 會建立一個預存程序。 在某些情況下,必須在自發交易中呼叫預存程序。 在此情況下,SSMA 會建立兩個預存程序:一個會實作程序,另一個則用來呼叫實作預存程序。
資料庫轉換 SSMA for MySQL 不會直接轉換作為 MySQL 物件的資料庫。 MySQL 資料庫會被視為更像結構描述名稱,而且所有實體參數在轉換期間都會遺失。 SSMA for MySQL 會使用將 MySQL 資料庫對應至 SQL Server 結構描述 (MySQLToSQL),來從 MySQL 資料庫將物件對應到適當的 SQL Server 資料庫/結構描述配對。
觸發程序轉換 SSMA 會根據以下規則建立觸發程序:

- BEFORE 觸發程序會轉換成 INSTEAD OF T-SQL 觸發程序
- AFTER 觸發程序會轉換成 AFTER T-SQL 觸發程序,且每個資料列有或沒有反覆項目。
檢視轉換 SSMA 會建立具有相依物件的檢視
陳述式轉換 - 每個 SQL 陳述式物件都可能包含單一 MySQL 陳述式 (例如 DDL、DML 和其他類型的陳述式) 或 BEGIN ... END 區塊。
- MultiStatement Conversion:BEGIN ... END 區塊轉換,SQL 陳述式也能包含 BEGIN ... END 區塊,例如在程序、函數或觸發程序定義中包含該區塊。 這些區塊的轉換方式應該與單一 MySQL 陳述式物件轉換的方式相同。

轉換 MySQL 資料庫物件

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

將 MySQL 物件轉換成 SQL Server 或 Azure SQL 語法

  1. 在 MySQL 中繼資料總管中,展開 MySQL 伺服器,然後展開 [資料庫]。

  2. 選取要轉換的物件:

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

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

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

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

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

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

檢視轉換問題

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

檢視摘要報告

  1. 在 MySQL 中繼資料總管中,選取 [資料庫]。

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

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

    • 若要檢視個別結構描述的報表,請在 MySQL 中繼資料總管中選取資料庫。

    • 若要檢視個別物件的報表,請在 MySQL 中繼資料總管中選取物件。 發生轉換問題的物件會帶有紅色錯誤圖示。

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

檢視個別轉換問題

  1. 在 MySQL 中繼資料總管中,展開 [資料庫]。

  2. 展開顯示紅色錯誤圖示的資料庫。

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

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

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

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

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

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

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

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

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

  • 您可以將物件排除在移轉作業之外。 在 SQL Server 或 SQL Azure 中繼資料總管和 MySQL 中繼資料總管中,清除項目旁的核取方塊,再將物件載入 SQL Server 或 Azure SQL,然後從 MySQL 移轉資料。

另請參閱

下一步