MySQL 是相當常用之資料庫伺服器,而微軟雲端服務 Microsoft Azure 上 Azure SQL Database 是一個功能強大且經濟實惠的選擇,透過本篇文章,使用 SQL Server Migration Assistant ( 以下簡稱 : SSMA ) 利用幾個簡單的步驟,可將您的 MySQL 資料庫移轉到  Microsoft SQL Server 或是 Azure SQL Database 上。

SQL Server 移轉小幫手

SSMA 支援多種架構的資料庫 (Sybase、Oracle、MySQL) 快速移轉到 Azure SQL Database 或 Microsoft SQL Server。它將移轉資料庫的主要步驟;例如 : 結構 (Schema) 轉換、SQL 陳述式轉換、資料表格移轉等加以自動化,來減少從不同架構的資料庫移轉至 Azure SQL Database 或 Microsoft SQL Server 的時間和風險。SSMA 目前提供以下多種版本:

  • 支援 Oracle 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)

Microsoft SQL Server Migration Assistant v6.0 for Oracle

  • 支援 MySQL 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)

Microsoft SQL Server Migration Assistant v6.0 for MySQL

  • 支援 Sybase 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)

Microsoft SQL Server Migration Assistant v6.0 for Sybase

  • 支援 Access 之 Microsoft SQL Server移轉小幫手 (Version 6.0)

Microsoft SQL Server Migration Assistant v6.0 for Access

關於安裝步驟,詳情請參考 : SQL Server Migration Assistant Team's Blog

將 MySQL 資料庫移轉到 Microsoft SQL Server 步驟

1. 下載並且安裝 Microsoft SQL Server Migration Assistant for MySQL

2. 開啟 Microsoft SQL Server Migration Assistant for MySQL

接著點選 File 來新增一個新的資料庫物件(object)。

在新增物件的對話方塊中,會要求輸入物件名稱以及要將 MySQL 資料庫移轉到哪個版本的 Microsoft SQL Server 或是 Azure SQL Database ( 舊名 SQL Azure )。本範例中我們選擇將 MySQL 資料庫移轉到 Microsoft SQL Server 2008 Express 版。

選取 "OK",則新的資料庫物件就建立好了。

注意 : 若是您目前的 SQL Server 版本是舊版本 (例如 : SQL Server 2008),則您資料庫物件轉移選項不能夠高於此版本。

3. 建立 MySQL 資料庫連線

選取左上角的 "Connect to MySql"

輸入 MySQL 的伺服器名稱、連結的通訊端口、使用者名稱與密碼

注意 :

  • 要連結 MySQL 的話,還需要安裝 MySQL-Connector-odbc (版本5.1以上),若先前沒有下載的話,在上圖頁面中會被提醒要下載 MySQL ODBC,您可至 http://dev.mysql.com/downloads/connector/odbc/ 下載安裝
  • MySQL-Connector-odbc 無法連接 MySQL 4.0 與更舊版本的 MySQL

輸入完畢之後,點選 "Connect" 按鈕,接著如下圖所示。在左上邊的 MySQL Metadata Explorer 會顯示出我們想要轉移的 MySQL 資料庫 (world),而在最下方輸出列中會顯示 SQL Server Migration Assistant 已經成功的連接到 MySQL。

上圖右方則是可以讓我們設定對映的 Type、Schema 等移轉的選項。

4. 連接 Microsoft SQL Server

選取左上角"Connect to SQL Server"

接著輸入 SQL Server 的伺服器名稱、目標資料庫名稱以及使用者帳密。

輸入完畢之後,會看到以下的警告訊息。

會出現以下原因為 SQL Server 2008 Express R2 不提供SQL Agent,但是這並不影響移轉的結果,這邊選擇繼續。

若您輸入的資料庫在 SQL Server 中不存在的話,會有提示告訴您要建立一個。

如同步驟三一樣,在最下方工具列上,可以看到 SQL Server Migration Assistant 已經成功的連到了目標 SQL Server

5. 轉換結構描述(Convert Schema)

目前 SQL Server Migration Assistant 已經連接上了 MySQL 和 SQL Server,接著我們要來轉換結構描述,將 MySQL 資料庫中的欄位、欄位類型、主鍵 (primary key)、外鍵 (foreign key) 等結構轉換適用到 SQL Server。

點選要轉換的MySQL資料庫,選取上方工具列的"Convert Schema"。

完成轉換後,我們可以看到 SQL Server 裡面已經有與 MySQL 資料庫中相同的 Schema。

6. 同步 (Synchronize)

上述步驟已經將 MySQL 的表單和 Schema 轉換到 SQL Server 上。下一個步驟,我們要使用 SSMA 將 SQL Server 與資料庫物件做同步。

在SQL Server資料庫中,點擊滑鼠右鍵,選取 "Synchronize with database "

在最下方的輸出列中可以看到同步已經完成了。

7. MySQL 的資料轉移到 SQL Server

最後一個步驟就是將 MySQL 資料庫內的所有資料全部轉移到 SQL Server 之中。

選取工具列上的 "Migrate Data"

資料轉移結束之後,可以從資料轉移報告上看到資料移轉的情況

從下圖可以看到資料成功的從 MySQL 資料庫移轉到 SQL Sever上

將 MySQL 資料庫移轉到 Azure SQL Database

將 MySQL 資料庫移轉到Azure SQL Database 的步驟其實與上面所述相當接近,只有在建立資料庫物件與建立連線上有些許的差別。

1. 點選 File來新增一個新的資料庫物件 (object)。

與上述有差別的地方就是,在建立物件的對話框中,我們要選取移轉的資料庫為 ”SQL Azure” ( Azure SQL Database 舊名)

當資料庫物件建立完成,並且與 MySQL 資料庫連接 (上述步驟3),此時我們要來建立與目標 Azure SQL Database 的連結。

2. 首先要先在 Microsoft Azure 上建立一個 Azure SQL Database。

詳細的方式請參閱這裡

3. 建立好了 Azure SQL Database 之後,我們進入 Azure 管理頁面,並且選擇 ”SQL 資料庫”

4. 在這項服務中,可以看到訂閱帳戶中的所有Azure SQL Database。

點選移轉目標的資料庫後,在儀表板的右下角可以看到 Azure SQL Database 的伺服器名稱,這個名稱就是在下個步驟中,要建立SSMA 與 Azure SQL Database 連線時,所要輸入的伺服器名稱。

5. 由於在步驟1已經告知 SSMA 要移轉的目標為Azure SQL Database,也因此在工具列選項也與上述不同。

選取”Connect to SQL Azure”

在這裡需要輸入步驟4的伺服器名稱、伺服器帳號密碼、目標資料庫名稱

建立完成之後,在左手邊的 "SQL Azure Metadata Explorer" 視窗可以看到,SSMA 已經與您的 Azure SQL Database 完成連線。

6. 建立完SSMA與Azure SQL Database 的連線之後,剩餘的動作包括:轉換結構描述、同步、移轉資料等步驟都與上述相同。

下圖顯示資料已經成功的移轉到Azure SQL Database

7. 完成最後一項步驟之後,透過 Microsoft Azure 的管理網站,我們可以直接使用SQL Database Management Portal 來管理資料庫,在此之前我們需要先取得存取資料庫權限。

進入到Azure SQL Database 的管理頁面,在最下方工具列選取管理。

此時會跳出對話框,詢問您是否要將您目前的 IP 位址加至防火牆規則中,選取"是",這樣 Azure 就會自動將您的 IP 加至規則中,如此才能夠進入 Azure SQL Database 的管理頁面。

您也可以透過伺服器管理頁面,將您所在的 IP 位址加至允許存取伺服器的 IP 範圍中

8. 取得管理權限之後,就可以使用SQL Database Management Portal 進入到資料庫內部進行管理。

輸入伺服器使用者名稱與密碼 (先前在新增步驟時所建立的)

透過 Azure SQL Database 的管理介面可以看到,MySQL 資料庫的 Schema 和資料已經成功的移轉到Azure SQL Database上。

這篇文章原始發佈於「Microsoft Azure 中文部落格」

http://blogs.msdn.com/b/msdntaiwan/archive/2014/09/18/mysql-microsoft-sql-server-azure-sql-database.aspx

如何將 MySQL 資料庫轉移到 Microsoft SQL Server 與 Azure SQL Database的更多相关文章

  1. Active Record: 資料庫遷移(Migration) (转)

    Active Record: 資料庫遷移(Migration) Programming today is a race between software engineers striving to b ...

  2. [转]SQL Server 安全性概論與無法刪除資料庫使用者的解決辦法

    經常有人來問我特定 SQL Server 資料庫裡的使用者無法刪除的問題,這問題其實跟 SQL Server 的安全性架構有很大關係,解決這個問題當然還是瞭解觀念的重要性大於知道如何解決問題.除了講解 ...

  3. [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習

    透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了! 這篇我們就來做個簡單的版本演練,加深印象吧! 我使用的環境如下 System : Windows 7 Database : SQL Server ...

  4. [心得] 如何利用liquibase進行資料庫版本控制 - 基礎觀念

    前言 - 會寫這篇除了是要記錄一下使用的過程之外,也是發現到網路上找來的教學幾乎都是跟其它環境做結合 比較沒有單純利用command進行的流程.也沒有整體觀念的介紹,所以將我所理解的整理分享給大家. ...

  5. Delphi APP 開發入門(八)SQLite資料庫

    Delphi APP 開發入門(八)SQLite資料庫 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次 ...

  6. 安卓初級教程(4):sqlite建立資料庫

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ...

  7. [MVC4-基礎] 從資料庫取值顯示在DropDownList中

    剛開始學MVC4,以下是一些基礎的學習筆記! 完成效果像下面這樣,資料來源是既有的Database. 1.Controller public ActionResult Index() { SqlCon ...

  8. vb.net 水晶報表CrystalReport 動態設定資料庫來源

    沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.confi ...

  9. VB.Net DataSet 填充資料庫內容

    '導入命名空間Imports System.Data.OleDb '定義變量 Dim ds As DataSet = New DataSet() Dim i, cn As Integer Dim Sq ...

随机推荐

  1. pthread条件变量

    pthread条件变量等待条件有两种方式:无条件等待pthread_cond_wait()和计时等待pthread_cond_timedwait(),其中计时等待方式如果在给定时刻前条件没有满足,则返 ...

  2. FFT&NTT&多项式相关

    打了FFT 感觉以后多项式不虚了 ~滑稽~ PS 关于详见没写完.... code #include<cmath> #include<cstdio> #include<c ...

  3. [BZOJ4650][NOI2016]优秀的拆分(SAM构建SA)

    关于解法这个讲的很清楚了,主要用了设关键点的巧妙思想. 主要想说的是一个刚学的方法:通过后缀自动机建立后缀树,再转成后缀数组. 后缀数组功能强大,但是最令人头疼的地方是模板太难背容易写错.用这个方法, ...

  4. [BZOJ4897][THUSC2016]成绩单(DP)

    4897: [Thu Summer Camp2016]成绩单 Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 220  Solved: 132[Subm ...

  5. 网络编程-tcp

    一.简单的demo (1)客户端 package com.songyan.tcp; import java.io.IOException; import java.io.InputStream; im ...

  6. 魅族 -- 禁止D及以下级别LOG的输出

    真机调试时:Log.d()打印不出信息,模拟器可以. 使用的手机:魅族. 状况:禁止D及以下级别LOG的输出. PS.Log.d("h_bl", "进入执行") ...

  7. WebForm页面使用Ajax

    AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML.指一种创建交互式网页应用的网页开发技术.AJAX并非缩写词,而是由Jesse ...

  8. WebLogic Cluster Sevlet的配置

    虽然生产环境中不建议使用,但因为客户需要考试可能用到,所以又做了一遍 1. 配置受管Server,ProxyServer,过程略 2.构建Proxy Application 建立一个ProxyApp的 ...

  9. LinkedIn是如何优化Kafka的

    作者 张卫滨                发布于        2015年9月21日   转载 在LinkedIn的数据基础设施中,Kafka是核心支柱之一.来自LinkedIn的工程师曾经就Kaf ...

  10. centos7 ping127.0.0.1不通

    ping 127.0.0.1,localhost和本地ip都不通,所有的配置也是正确的 检查下是否禁止了ping vim /proc/sys/net/ipv4/icmp_echo_ignore_all ...