Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
对于很多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管理页面中的导入功能导入. 其中包含数据库的元信息和数据.