如何將 MySQL 資料庫轉移到 Microsoft SQL Server 與 Azure SQL Database
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)
- 支援 MySQL 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)
- 支援 Sybase 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)
- 支援 Access 之 Microsoft SQL Server移轉小幫手 (Version 6.0)
關於安裝步驟,詳情請參考 : 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的更多相关文章
- Active Record: 資料庫遷移(Migration) (转)
Active Record: 資料庫遷移(Migration) Programming today is a race between software engineers striving to b ...
- [转]SQL Server 安全性概論與無法刪除資料庫使用者的解決辦法
經常有人來問我特定 SQL Server 資料庫裡的使用者無法刪除的問題,這問題其實跟 SQL Server 的安全性架構有很大關係,解決這個問題當然還是瞭解觀念的重要性大於知道如何解決問題.除了講解 ...
- [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習
透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了! 這篇我們就來做個簡單的版本演練,加深印象吧! 我使用的環境如下 System : Windows 7 Database : SQL Server ...
- [心得] 如何利用liquibase進行資料庫版本控制 - 基礎觀念
前言 - 會寫這篇除了是要記錄一下使用的過程之外,也是發現到網路上找來的教學幾乎都是跟其它環境做結合 比較沒有單純利用command進行的流程.也沒有整體觀念的介紹,所以將我所理解的整理分享給大家. ...
- Delphi APP 開發入門(八)SQLite資料庫
Delphi APP 開發入門(八)SQLite資料庫 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次 ...
- 安卓初級教程(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 ...
- [MVC4-基礎] 從資料庫取值顯示在DropDownList中
剛開始學MVC4,以下是一些基礎的學習筆記! 完成效果像下面這樣,資料來源是既有的Database. 1.Controller public ActionResult Index() { SqlCon ...
- vb.net 水晶報表CrystalReport 動態設定資料庫來源
沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.confi ...
- VB.Net DataSet 填充資料庫內容
'導入命名空間Imports System.Data.OleDb '定義變量 Dim ds As DataSet = New DataSet() Dim i, cn As Integer Dim Sq ...
随机推荐
- date conversion
SELECT to_char(sysdate,'yyyymmdd hh:mi:ss'), to_char(sysdate ,'yyyymmdd hh:mi:ss'), to_char(sysdate ...
- [Contest20180321]nonintersect
$\dfrac 2\pi$是个引人注目的数字,先来看看它到底是什么东西 假如有一条直线,它和题目所给的某条长度为$d$的线段夹角为$\theta$,那么线段在直线上的投影长度为$\left|d\cos ...
- 【数论】【暴力】bzoj4052 [Cerc2013]Magical GCD
考虑向一个集合里添加一个数,它们的gcd要么不变,要么变成原gcd的一个约数.因此不同的gcd只有log个. 所以对于每个位置,维护一个表,存储从这个位置向前所有的不同的gcd及其初始位置,然后暴力更 ...
- 【字符串哈希】bzoj3555 [Ctsc2014]企鹅QQ
枚举每个位置,给每个串的前半部分一个哈希值,后半部分一个哈希值,若是它们均相等,则视为这两个串相似. 每次转移之后,排序一下就行了. O(L*n*log(n)). #include<cstdio ...
- [CF911D]Inversion Counting
题目大意: 给你一个数列,翻转其中一个区间,问每次翻转过后逆序对个数的奇偶性. 思路: 首先树状数组求出一开始的奇偶性,然后考虑每次翻转对答案的贡献. 对于整个区间,我们可以把翻转转化成若干次交换. ...
- Spring Boot中使用MyBatis注解配置详解
传参方式 下面通过几种不同传参方式来实现前文中实现的插入操作. 使用@Param 在之前的整合示例中我们已经使用了这种最简单的传参方式,如下: @Insert("INSERT INTO US ...
- 6.5(java学习笔记)其他流(字节数组流,数据流,对象流,打印流)
一.字节数组流 之前使用输入输出流的操作的对象是文件,而这里字节数组流操作的对象是内存,内存可以看做是一个字节数组. 使用字节数组流读写就可以看做是从内存A到内存B的读写,对象时内存即字节数组. 1. ...
- Android 获取 json
Android 获取 json MainActivity.java package com.example.jsontest; import java.io.IOException; import ...
- 国内流行的开源.net微信公众平台SDK对比分析
一.引言 目前微信公众平台正如火如荼的进行中,微信虽然在海外市场不敌WhatsApp,但是已经俘获了国内绝大部分用户的心.作为国内最大的,超级"app",微信已算是成功问鼎了.公众 ...
- winform 窗体实现增删改查(CRUD)窗体基类模式
参考博客下方:http://www.cnblogs.com/wuhuacong/archive/2010/05/31/1748579.html 对于一般常用到的编辑数据.新增数据窗体,分开了两个不同的 ...