将数据库迁移到SQL Azure的三种工具
对于很多SQL Azure用户来说,使用SQL Azure的第一步就是将已有的数据库迁移到SQL Azure。下面我将向你介绍帮助您迁移数据库的三种工具。
一、SQL Server迁移助理(SQL Server Migration Assistant)
首先介绍的是SQL Server迁移助理(SQL Server Migration Assistant,SSMA)。它有分别针对Access、MySQL、Oracle、Sybase的几种版本。这里我们以SQL Server Migration Assistant 2008 for Access v4.2 为例。
1、先从File菜单打开迁移向导(Migration Wizard)。
2、然后在“创建新工程”(Create New Project)这一步,将迁移到(Migration To)修改为SQL Azure。这是需要注意的关键步骤,因为默认的选项是SQL Server。
3、然后, 我们把Access数据库加入到向导中,稍候几秒钟之后,这个向导就会列出Access数据库中的所有表和查询等对象,以供选择。
4、选择好需要迁移的对象之后,下一步,我们需要提供SQL Azure的服务器和数据库名称及登录信息。一般来说,这时我们可以在自己的SQL Azure服务器上创建一个空白数据库。
5、最后,迁移的核心开始执行了。在这一步中,迁移助理先把Access中的对象(包括表、主键、外键、约束等等)转换成SQL Azure中对应的对象,并在SQL Azure数据库中创建这些对象,然后再把表内的所有数据行转换并载入SQL Azure数据库中。对于转换对象的过程,迁移助理生成了详细的报告。我们可以点击Report按钮来浏览。
二、数据层应用程序(Data-tier Application,DAC)
通过数据层应用程序(Data-tier Application,缩写为DAC),我们可以将SQL Server中的数据库的Schema提取出来,并且可以方便地将Schema布署到SQL Azure上。数据层应用程序DAC已经集成在SQL Server Management Studio (2008 R2) 与Visual Studio 2010之中。面前,DAC只能提取和布署Schema,而不能提取、布署表中的数据行。今后,DAC会增加这项功能。
DAC很适宜用于基于数据库的软件的开发过程中,尤其当我们把Visual Studio和Management Studio融合为一体时。
在本文中, 我们以Management Studio中的DAC为例,来介绍数据层应用程序的提取与布署。
1、启动提取数据层应用程序的向导。只需要在Object Explorer中右键点击某一个SQL Server的数据库,在弹出的菜单中选“Tasks”,然后选择“Extract Data-tier Application”。这样,提取数据层应用程序的向导就弹出来了
。
2、在这个向导中的Set Properties(设置)页面中,我们可以设置应用程序的名称以及DAC Package的路径。
3、接着,进入Validation and Summary(校验与总结)页面。如果第一步中所选的数据库中有DAC不支持的特性,这一步会报错。
4、进入Build Package页面生成DAC包。下面我们将把刚才生成的DAC包布署到SQL Azure服务器中。
5、在Management Studio的Object Explorer中,右键点击 一个SQL Azure服务器。在弹出的菜单中,选择“Deploy Data-tier Application”(布署数据层应用程序)。
6、在弹出的“Deploy Data-tier Application”向导中,进入“Select Package”页面。在这儿,我们选择刚才生成的DAC包。
7、在随后的“Update Configuration”页面中,我们可以修改这次布署的目标数据库的名字。
8、在Summary页面中,可以看到此次布署的总结。
9、最后,在“Deploy DAC”页面中,向导会将DAC包布署到SQL Azure服务器,并且在服务器上注册这个DAC包的元数据。
三、脚本生成向导(Generate Script Wizard,GSW)
使用脚本生成向导来迁移数据库的原理是:将一个数据库的所有Schema与数据行都用GSW导出成Transact-SQL的脚本,然后在SQL数据库中执行这些脚本。具体地说则有下述步骤。
1、在Management Studio的Object Explorer中,右键点击某一SQL Server的数据库。在弹出的菜单中,选取“Tasks”,再在展开的菜单中选择“Generate Scripts”。
2、这时会弹出“Generate and Publish Scripts”向导,即“生成与发布脚本”向导。在这个向导的Introduction页面中,点击Next。
3、在“Choose Objects”页面中,我们可以选择需要迁移的表(Tables)、存储过程(Stored Procedures)、用户定义的数据类型(User-Defined Data Types)以及Schemas。
4、在“Set Scripting Options”页面中,我们需要点击“Advanced”按钮,以更改高级选项。
5、我们需要更改两处高级选项。其一是将“Script for the database engine type”改选为“SQL Azure Database”。这是因为我们要将这个数据库迁移到SQL Azure上。
6、其二是将“Types of data to script”改选为“Schema and data”,以将数据模式与数据行一起迁移。
7、然后,我们可以逃过“Summary”页面,来到“Save or Publish Scripts”页面。在这儿,GSW将把我们选取的数据库对象转录誊写为一个T-SQL的脚本文件。
8、现在,我们就可以在SQL Azure服务器上新建一个数据库,然后通过Management Studio的脚本窗口,在这个数据库中来执行刚才生成的T-SQL脚本。这样,就完成了这次数据库迁移。
软件开发测试工程师 范智华
Comments
- Anonymous
October 07, 2011
Microsoft SQL team提供的第4种工具(命令行)详见 www.sqlazurelabs.com/importexport.aspx,%E5%8D%B3%E5%88%A9%E7%94%A8%E4%B8%8A%E8%BF%B0%E5%B7%A5%E5%85%B7%E5%88%86%E4%B8%BA%E4%B8%A4%E6%AD%A5%E6%93%8D%E4%BD%9C: 1将本地数据库导出到本地的bacpac文件,2导入到SQL Azure中. 也可以将本地数据库利用上述工具导出到本地的bacpac文件,然后上传到Windows Azure的存储中,然后用SQL Azure管理页面中的导入功能导入. 其中包含数据库的元信息和数据.