通过SSMS工具迁移本地的SQL Server Database到Windows Azure SQL Database

微软的产品更新越来越快了,几乎每年都有产品更新,今天呢,我们主要介绍一下,如何将本地的SQL Server数据库迁移到windows azure上的SQL Server Database。当然说到SQL Serrver数据库的迁移,大家都会想到最普通及最普遍的方法,那就是通过备份数据库,然后通过备份的数据库文件进行还原。其实呢,我们在IT运维的工作中多少会有体会,最普通的方法往往是最有效的方法也是最安全的方法,但是效率不高,由于时代进步的太快了,我们也不能太out了,也不想用这个古老的方法去做数据迁移,毕竟SQL Server及windows azure都是微软的产品,微软肯定也有其他管理工具进行迁移或者管理。我们日常都会用到,数据库的管理工具,我们首选会用到SQL Server Manager Studio(SSMS)进行管理操作。那SSMS到底支不支持从本地的SQL Server数据库迁移数据到Windows azure SQL Server Database呢。答案是肯定支持的,那怎么操作呢,那就是我们今天介绍的主要内容,我们会主要着重介绍两种方法,第一是通过SSMS直接迁移到windows azure sql database下,还有一种就是通过SSMS导出需要迁移的数据库架构信息,然后在windows azure sql database下导入架构信息。

关于本地SQL Server迁移到Azure Database,首先我们需要明确二者之间的差异(比如支持的SQL语法及一些约束条件等),然后根据这些差异制定基于当前数据库的迁移计划。关于Azure SQL Database与传统SQL Server数据库几点重要的差异:

1. 聚集索引要求:Azure SQL Database 不支持没有聚集索引的表,表必须具有聚集索引(这点非常重要,更多约束参考:Azure SQL Database 一般性的指导原则和限制)。

2. Azure SQL Database Transact-SQL 参考

3. 不支持的 Transact-SQL 语句

关于具体的迁移实现过程,我们可以参考微软官方提供的迁移方案:

1. 将 SQL Server 数据库迁移到 Azure SQL Database

2. 使用 SQL Server Data Tools 将数据库迁移到 Azure SQL Database

使用SQL Server数据库导入Azure

前提条件:

a. 需要在本地安装SQL Server 2012 SP1 CU2 或者更新的版本. 如果您安装了 SQL Server 2012 SP1,可以从下面的连接下载并更新SQL Server.


SQL Server2012 SP1 CU2


http://support.microsoft.com/kb/2790947/en-us


SQL Server2012 SP1 CU4


http://support.microsoft.com/kb/2833645/en-us

b. 本地数据库的数据对象需要满足支持DAC的要求,具体可以查看 对 SQL Server 对象和版本的 DAC 支持 (http://technet.microsoft.com/zh-cn/library/ee210549.aspx)

另外我们还可以通过第三方的工具来迁移。

使用SQLAzureMW进行迁移

SQLAzureMW是微软公司发布在CodePlex上的一个项目,它可以将SQL 2005及SQL 2008数据库迁移到SQL Azure上。其最新版本是3.3,下载地址是:

http://sqlazuremw.codeplex.com/releases/view/32334

SQLAzureMW会检测并纠正SQL Server 2005/2008与SQL Azure之间的不兼容性。向导能修复的一些常见问题有:使用varChar(max)替换text列、将用户自定义类型转换为基类型。将text列转换为varchar(max),将image转换为varbinary(max),同时它还会取消对XML schema的绑定,因为SQL Azure并不支持它。由于SQL Azure缺乏对hierarchyID的支持,因此需要手工完成。除了在SQL Azure上生成脚本以部署迁移的schema之外,用户还可以凭借该工具通过BCP来迁移表数据。

废话不多说了,今天我们主要介绍通过SSMS如果做数据的迁移。具体操作见下:

前提是我们已经在windows azure上创建好了数据库,然后用2008的Sql Server Manager Studio对数据库进行连接管理,我们通过SSMS连接了本地的SQL SERVER及windows azure上的SQL Server Database。我们连接后发现,2008 sql server manager studio工具的任务下,没有部署数据到windows azure database的选项,经过咨询世纪互联后,告知,SSMS的版本必须是2012以上版本,而我们现在使用的是2008版本的SSMS,所以无法通过以下方法进行导出及导入:

为了解决问题,我们就在微软的MSDN网站上下载最新的数据库,目前微软最新的数据库版本为SQL Server 2014,所以我们就下载了SQL Seraver 2014 Manager Studio管理工具的安装包。

Sql server 2014 manager studio管理数据库

开始安装SQL Server Manager Studio2014

安装完成后,我们运行SQL Server Manager Studio2014工具

还是连接本地的SQL server数据库和Windows azure Sql server database数据库后,然后我们在本地数据库下,右击要迁移的数据库---Deploy Database to windows azure sql database

我们发现一共有两个选项,还有一个是Deploy Database to windows azure vm,这个选项是windows azure 上的vm上运行的sql 数据库迁移

我们迁移本地数据到windows azure sql database后,我们默认下一步

解析来我们需要连接目标服务,也就是说迁移的目的地,我们要迁移到windows azure上,所以我们需要连接windows azure sql server database

可根据自己的选项进行连接及配置

开始导出sql server 的架构信息

开始在windows azure上创建对应的数据库架构及数据包。

操作完成

我们通过SSMS可以看见windows azure sql server database下多了一个本地的数据库,通过查询语句查看,数据完整性好。

方法2:

我们在迁移数据库的时候还有一张方法,那就是Export data-tier application进行还原。该功能类似于数据库的备份机还原。

我们默认下一步

保存模板文件,模板文件的类型为.bacpac

保存信息提示

操作完成。导出数据库及架构等信息。

导出的架构文件及数据文件

接下来我们还是通过SSMS链接windows azure SQL Server database进行还原。我们右击windows azure sql server database后,右击import data-their application

提示信息。

我们选择刚才备份的数据库架构文件

确认数据库的配置信息后,下一步

确认信息

操作完成。

我们还是通过SSMS查看windows azure下的SQL Server database数据库信息

我们还是通过sql 查询语句对刚才迁移的数据库进行查询机判断。

时间: 2024-11-16 15:18:49

通过SSMS工具迁移本地的SQL Server Database到Windows Azure SQL Database的相关文章

SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑

本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症.可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? 每个公司都会有一两个几乎快被人遗忘的系统,接手维护这些系统的人可能都不知换了多少批了.它们的命运注定慢慢消亡.然而偏偏却又生命力顽强,总还有一些人在使用着这些系统.所以就处在一种尴尬的境地: 升级吧,价值不大,可能再过一两年,这系统就要被其它系统替代了.而且项目经理也没有精力.人手耗费在这上面.最

通过本地的SQL Manage sutudio管理windows azure上的SQL Server

通过SQL Manage sutudio管理windows azure上的SQL Server 说到windows azure上的SQL创建,我们在上一篇文章上有介绍了,那今天主要介绍什么呢,我们发现在windows azure上创建的sql数据库下没有SQL Server代理选项功能.我相信大家都用过SQL Server代理相关的功能,具体功能就不用多说了.拿我来说,因为我们有个服务的数据是写入到SQL Server上的,我们在本地通过计划人物实现对数据保留60天,然后通过web方式查询,这样

[转]Azure 表存储和 Windows Azure SQL Database - 比较与对照

本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manheim 审阅者:Brad Calder.Jai Haridas.Paolo Salvatori.Silvano Coriani.Prem Mehra.Rick Negrin.Stuart Ozer.Michael Thomassy.Ewan Fairweather 本主题比较  支持的两种结构化存储类

SSMA迁移本地的MY SQL到本地SQL server及windows azure SQL Databaase

说到数据库,很多人都会想到MY Sql.SQL Server及oracle等等,同时很都人首选MY SQL,因为MY SQL是免费的,而且数据包也比较小,安装快捷方便,而SQL Server是收费的,是微软的产品,收费相当高,一般很少用,除非大数据,当然在资金满足的情况下会选择oracle数据库了,这些我就不具体说了,今天呢,我们主要介绍一下如何将本地的MY SQL数据迁移到SQL Serrver下,不管什么服务,迁移数据是最痛苦的事了,那有没有一种比较智能的方法做迁移呢,答案那是必须的,那是什

一名小小的SQL Server DBA想谈一下SQL Server的能力

一名小小的SQL Server DBA想谈一下SQL Server的能力 百度上暂时还没有搜索到相关的个人写的比较有价值的文章,至少在中文网络的世界里面没有 但是在微软的网站有这样一篇文章:<比较 SQL Server 与 IBM DB2> 文章从下面几个方面进行了对比 1.TCO和ROI2.性能和可扩展性3.高可用性4.安全5.管理6.开发效率7.商业智能和数据仓库8.OLTP9.SAP集成 文章介绍得比较牛逼 性能与可扩展性 SQL Server 的性能和可扩展性优于IBM DB2. 基准

使用SQL Server 2008远程链接时SQL数据库不成功的解决方法

远程连接SQL Server 2008,服务器端和客户端配置 关键设置: 第一步(SQL2005.SQL2008): 开始-->程序-->Microsoft SQL Server 2008(或2005)-->配置工具-->SQL Server 配置管理器-->SQL Server网络配置-->MSSQLSERVER(这个名称以具体实例名为准) 的协议-->TCP/IP-->右键-->启用 第二步: SQL2005: 开始-->程序-->Mi

SQL Server 2008 R2升级到SQL Server 2012 SP1

1.建议对生产环境对的数据库升级之前做好备份,以防不测. 2.从SQL Server 2008 R2 升级到SQL Server 2012 SP1,需要先安装SQL Server 2008 R2 的SP1 或SP2 补丁包,在此运行安装已经下载好的SP2 补丁包,如图 3. SQL Server 2008 R2 更新运行检查,如图 4. 接受许可条款,如图 5. 选择功能,如图 6. 检查正在使用的文件,如图 7. 已准备好更新,选择"更新",如图 8. 更新完成,选择"关闭

SQL Server R2 2008中的SQL Server Management Studio 阻止保存要求重新创建表的更改问题的设置方法

在2008中会加入阻止保存要求重新创建表的更改这个选项.症状表现为修改表结构的时候会"阻止"你. SQL Server 2008“阻止保存要求重新创建表的更改”的错误的解决方案是本文我们主要要介绍的内容,情况是这样的:我们在用SQL Server 2008 建完表后,插入或修改任意列时,提示:当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改. 如果强行更改会出现以下提示:不允许保存更改.您所做的更改要求删除并重新

Sql Server中如何快速修正SQL 语句错误

本文将和大家讨论一些关于找SQL 错误的问题. 现在的系统基本都是需要用到数据库的,既然用到数据库我们就要写SQL 脚本,常用的做法是现在Microsoft Sql Server Management Sudio写好调试好,然后贴到 代码中,但这样就能保证我们的SQL 脚本正常运行吗?那如果带参数的SQL 或存储过程出现问题呢?如果数据出现问题,我们应该怎么找出错误的SQL 呢? 带着这个疑问,开始我们今天的讨论.以前用代码和数据库打交道,出现数据问题,我们会打个断点一步一步的调试,就像这样: