微軟官方免費工具 SSMA for MySQL 支援將 MySQL 資料庫(含 WordPress 等實戰案例)遷移至 SQL Server 或 SQL Azure。本文以 WordPress 資料庫為例,演示端到端遷移流程。
mysql-ssma.license 並載入。「檔案 → 新專案」→ 選擇遷移目標:SQL Server 或 SQL Azure。
工具列「連接到 MySQL」→ 填寫 DSN/主機/埠/帳號/密碼 → 連線成功後,左側「MySQL 元資料總管」顯示庫/表樹狀結構。
右鍵目標資料庫 →「建立報告」→ 分析型別對映、不支援語法、資料截斷風險等。報告紅色項需優先處理。
工具列「連接到 SQL Server」→ 指定目標資料庫名(若不存在,SSMA 詢問是否建立)。右側「SQL Server 元資料總管」顯示目標結構。
MySQL 元資料總管 → 右鍵資料庫 →「轉換結構」。
關鍵調整範例: MySQL datetime 欄位預設值 '0000-00-00 00:00:00' 在 SQL Server 非法,需在轉換後將該欄位改為 NULL 或有效預設值 '1900-01-01'。
SQL Server 元資料總管 → 右鍵資料庫 →「與資料庫同步」→ 確定。SSMA 在目標端建立/更新表、索引、外鍵等結構物件。
MySQL 元資料總管 → 右鍵資料庫 →「遷移資料」→ 輸入雙端連線認證 → 開始。進度條顯示各表列數、耗時、錯誤行。
| MySQL | SQL Server | 處理建議 |
|---|---|---|
AUTO_INCREMENT | IDENTITY(1,1) | SSMA 自動轉換 |
ENUM/SET | 無對應 | 改為 CHECK 約束或查核表 |
utf8mb4 | NVARCHAR | 字串長度 ×2~3 預留 |
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | DATETIME2 + 觸發器 | SSMA 生成觸發器,驗證邏輯 |
ENGINE=InnoDB | 叢集索引表 | 主鍵必須非叢集或調整填充因子 |
SELECT COUNT(*) FROM src vs SELECT COUNT(*) FROM dst。SSMA 讓異構遷移從「手工腳本」進化為「可視化、可審計、可重覆」的工程化流程,適合中型專案一次性遷移;持續同步仍需 CDC 工具。