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. luogu P1095 守望者的逃离

    题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...

  2. 【概率dp】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) D. Jon and Orbs

    直接暴力dp就行……f(i,j)表示前i天集齐j种类的可能性.不超过10000天就能满足要求. #include<cstdio> using namespace std; #define ...

  3. 【Heap-dijkstra】Gym - 100923B - Por Costel and the Algorithm

    algoritm.in / algoritm.out Even though he isn't a student of computer science, Por Costel the pig ha ...

  4. 【枚举】【二分答案】【分块答案】【BFS】【最大流】【Dinic】bzoj1189 [HNOI2007]紧急疏散evacuate

    [法一]枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意di ...

  5. 【kruscal】【最小生成树】【并查集扩展】bzoj3714 [PA2014]Kuglarz

    ORZ:http://www.cnblogs.com/zrts/p/bzoj3714.html #include<cstdio> #include<algorithm> usi ...

  6. 【2-SAT(两次DFS版)】BZOJ1823-[JSOI2010]满汉全席

    [题目大意] 有n个材料,m个评委.每种材料可以被用来做满族菜或汉族菜,m个评委有两种可以让他满意的猜中.问是否可以满足所有评委要求? [思路] 每天只能做三道题,我已经是一个废人了……(葛优躺.jp ...

  7. python3开发进阶-Django框架的起飞加速一(ORM)

    阅读目录 ORM介绍 Django中的ORM ORM中的Model ORM的操作 一.ORM介绍 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一 ...

  8. spring+activity+mysql集群

     第一步:先配置好第一个activityMQ 在broker外面加入数据库的连接信息,并将mysql的mysql-connector-java.jar,即java连接mysql的jar包放入apach ...

  9. python的dict如何排序

    Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排 # ...

  10. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.8. 配置用户环境

    2.8.配置用户环境 2.8.1. 配置节点RAC1 配置grid用户环境变量: cat >> /home/grid/.bash_profile <<EOF export TM ...