如何将本地数据库迁移至SQL Azure
Windows Azure的SQL Azure和SQL Server 拥有不同的体系结构,可以说是两个不同的产品。SQL Azure不完全支持或者尚不支持SQL Server的某些功能,这使得我们不能像平常一样使用bak文件还原的方式迁移数据库,也不能使用数据导入导出向导。很多SQL Server的特性在SQL Azure中不被支持。
那我们怎样才能将现有数据库迁移到SQL Azure上呢?
一、“将数据库部署到SQL Azure”向导
我最先想到的是这个向导,对数据库右键=>任务=>选择“ 将数据库部署到SQL Azure”。按照部署向导一步一步执行到最后会得到这样一个长长的错误列表:

如图中错误信息所示,SQL Azure不支持SQL Server的扩展属性[MS_Description](字段说明)。修改现有数据库把所有字段说明全删除显然不可行,即使可以,也会有新的兼容性问题在等着你。使用数据导入导出向导同样不能完美解决问题。
二、使用DAC迁移数据库架构
于是我尝试用DAC包来只迁移架构,DAC是数据层应用程序,使用SQL Server Management Studio(SSMS)的“提取数据层应用程序”向导可以将数据库的架构信息打包至一个.dacpac文件里,如图所示:

然后打开SSMS,使用SQL Azure的“部署数据层应用程序”向导,选择刚才的.dacpac文件,即可将数据库架构迁移到SQL Azure。

但是DAC包只包含数据库的架构定义信息,不包含数据,所以只能进行架构的迁移。如果数据库有海量数据,该怎么迁移呢?
三、使用SQLAzureMW完美实施数据库迁移
SQLAzureMW是第三方数据库迁移工具,能很好的解决SQL Server至SQL Azure的迁移问题。
它会解决SQL Server和SQL Azure的兼容性冲突,生成SQL Azure兼容的脚本,然后远程执行脚本实施数据库迁移。
该工具下载地址:http://sqlazuremw.codeplex.com/
我以数据库School为例,它包含100万条数据以及复杂的外键关系,约束。另外还包含存储过程1个,视图1个。
具体步骤如下:
1. 选择分析并迁移/数据库

2.选择源数据库,以本地数据库school为例

3.选择要生成的数据库对象

4.打开高级选项,确保“生成表/数据”一项选择的是“表结构和数据”

5.检查将要生成脚本的数据库对象

6.脚本生成成功

7.链接目标数据库,我这里以SQL Azure上的SchoolAzure为例

8.点击下一步,执行脚本

9.打开SSMS查看结果,可以看到表、数据、主外键关系、约束、视图、存储过程都在。迁移成功!

后记:数据库一旦迁移到Azure上,以后的备份和还原工作就简单得多了,直接在Windows Azure管理门户上导出.bacpac包,即可进行备份或迁移至本地。

如何将本地数据库迁移至SQL Azure的更多相关文章
- 使用SSMS 2014将本地数据库迁移到Azure SQL Database
使用SQL Server Management Studio 2014将本地数据库迁移到Azure SQL Database的过程比较简单,在SSMS2014中,有一个任务选项为“将数据库部署到Win ...
- 【HTML5】HTML5本地数据库(Web Sql Database)
Web Sql数据库简介 Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库. Web SQL数据库的浏览器支持情况 Web SQL 数 ...
- laravel 数据库迁移转 sql 语句
可以使用下面的命令 php artisan migrate --pretend --no-ansi 当然,你需要有可以 migrate 的东西. 数据库迁移导出到文件(使用命令) <?php n ...
- 【数据库-Azure SQL Database】如何创建事务复制将本地数据同步到 SQL Azure
Azure SQL DB 可以被配置成为 SQL Server 事务复制的一个订阅者( subscriber ). 主要应用场景有两种: 将您的数据迁移到 Azure SQL DB, 并且没有宕机时间 ...
- HTML5教程之html 5 本地数据库(Web Sql Database)
HTML5的Web SQL Databases(html5 本地数据库)的确很诱惑人,当你发现可以用与mysql查询一样的查询语句来操作本地数据库时,你会发现这东西挺有趣的.今天,我们一起来了解HTM ...
- html 5 本地数据库(Web Sql Database)核心方法openDatabase、transaction、executeSql 详解
Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome. Firefox.Opera等主流浏览器都已经支持Web ...
- 数据库迁移(SQL SERVER导入数据到MySql)
地址:http://blog.csdn.net/jiaohougenyang/article/details/44937801 背景:项目最开始时使用的是SQL Server数据库,业务需求现要将数据 ...
- Oracle Oracle数据库 迁移到 SQL Server上
原地址:https://blog.csdn.net/LongtengGensSupreme/article/details/81355181
- 将本地数据库迁移到云端RDS数据库
随机推荐
- Oracle DSI系列 01 DSI初识BBED
DSI是Data Server Internals的缩写,是Oracle公司内部用来培训Oracle售后工程师使用的教材. 1 bbed工具使用BBED工具介绍BBED stands for Bloc ...
- NP、NPC、NP-hard问题的定义
NP-hard问题 定义:NP-hard问题是这样的问题,只要其中某个问题可以在P时间内解决,那么所有的NP问题就都可以在P时间内解决了.NP-c问题就是NP-hard问题.但注意NP-hard ...
- sql多表更新使用别名(小技巧)
update A set A.CityRegionID=B.ParentID, A.CityName=(select RegionName from Common_Region ...
- 并发包学习(三)-AbstractQueuedSynchronizer总结
J.U.C学习的第二篇AQS.AQS在Java并发包中的重要性,毋庸置疑,所以单独拿出来理一理.本文参考总结自<Java并发编程的艺术>第五章第二节队列同步器. 什么是AbstractQu ...
- python 爬虫气象气象定时报 气象预警推送
"2018-04-09 14时""长沙市""10日(明天)""多云转雷阵雨""29℃""1 ...
- Redis 集群二
[Redis 集群二] 集群的客户端 Redis 集群现阶段的一个问题是客户端实现很少. 以下是一些我知道的实现: redis-rb-cluster 是我(@antirez)编写的 Ruby 实现, ...
- 01-E-1: 迭代与递归
- ICG游戏:尼姆游戏异或解法的证明
描述: 尼姆博奕(Nimm Game),有n堆石子,每堆石子有若干石子,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限.取走最后石子的人获胜. 标准解法: 判断: 先计算先手是必胜还是 ...
- jquery实现全选,取消,反选的功能&实现左侧菜单
1.全选,取消,反选的例子 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- java反射机制学习代码
根据 http://www.iteye.com/topic/137944 文档进行学习 代码如下: package reflectTest; import java.lang.reflect.*; i ...