SQL中国研发中心

微软中国研发集团服务器与开发工具事业部SQL中国研发中心的博客。

SQL Server Migration Assistant简介(二)

SQL Server Migration Assistant简介(二)

Rate This
  • Comments 2

前一篇博文里我们介绍了使用SSMA for Oracle 5.0做Oracle数据库迁移之前的评估,本文中我们将介绍如何做Schema迁移和数据迁移。

首先我们需要连接目标数据库,点击工具条上的Connect to SQL Server,输入Server name,在Database里输入HR,如图1所示。如果你的SQL Server里不存在HR数据库,点击Connect后SSMA会提示错误,问你是否创建HR数据库,选择Yes。HR数据库创建后SSMA可能会提示SQL Server Agent未运行,这仅在使用服务器端数据迁移时才会用到,默认情况下我们使用的是客户端数据迁移,所以可以点击Continue忽略。 

图1 连接到SQL Server服务器

连接上SQL Server服务器后我们就可以迁移Schema了,这里的Schema指数据以外的数据库定义,比如表结构、视图定义、存储过程等等。右键单击Oracle Metadata Explorer里的HR数据库,选择Convert Schema,如图2所示。SSMA运行一段时间后会在最下方的Output栏里显示转换是否有错误、警告或信息。这时你可以展开SQL Server Metadata Explorer里HR数据库的dbo schema,在Procedures文件夹下会发现ADD_JOB_HISTORY等存储过程,Tables文件夹下会发现COUNTRIES等表,说明Schema的迁移已经成功。

图2 转换Schema

如果这时你使用SQL Server客户端工具SQL Server Management Studio或者Visual Studio的Server Explorer查看SQL Server上的HR数据库,你会发现找不到前面所说的存储过程、表或者视图。这是因为Convert Schema菜单项只是在SSMA的Project里进行了转换,并未转换到数据库。这么设计为了让你可以在同步到SQL Server之前再做些其他修改,比如REGIONS表里的REGION_ID列在Oracle里是NUMBER类型,它被SSMA转换成了最安全的float(53)类型,如果你知道REGION_ID就是个整形,你可以把它修改为int类型,当然你最好对COUNTRIES表的REGION列也做同样的修改。

在确认Schema迁移没有问题后,你可以同步到SQL Server数据库了,在SQL Server Metadata Explorer里右键点击HR数据库,选择Synchronize with Database,如图3所示。

图3 同步HR数据库到SQL Server

这时可能会再次弹出SQL Server连接对话框和SQL Server Agent未运行的警告,确认后会显示Synchronize with the Database对话框,如图4所示。对话框里列出了SQL Server数据库和SSMA的树结构的差别,可以选择Hide Equal Objects来过滤掉两边相同的对象。由于我们连接的是新创建的HR数据库,所以左侧显示的都是 [Not Found] 状态,如果你之前做过同步这里会显示不同的状态,这里我们点击OK继续。等待右下角的进度条走完,留意主窗口Output栏是否报错,没有报错的话SQL Server里的对象应该已经创建好了。 

图4 Synchronize with the Database对话框

再次使用SQL Server Management Studio或者Visual Studio来查看HR数据库中的对象,会发现一些$SSMA打头的表或者存储过程等,这些是迁移一些特殊对象(比如Oracle的Sequence对象)所创建出来的辅助对象。

在成功迁移了Schema之后,我们就可以来进行迁移的最后一步:数据迁移。有了SSMA的帮助数据迁移也非常简单,右键点击Oracle Metadata Explorer里的HR数据库,选择Migrate Data,如图5所示。SSMA会再次提示Oracle和SQL Server的连接信息,如果之前做过数据迁移可能会有数据覆盖的警告信息,如果有点击Continue继续。

图5 数据迁移

如果你的数据库数据比较多,SSMA会运行较长一段时间,在这过程中你可以随时点击工具栏上的Stop按钮来停止数据迁移。迁移结束后,SSMA会有一个数据迁移报告,如图6所示。该报告描述了迁移过程中那些表的数据被成功迁移,多少行数据被迁移以及耗时多少等等。 

图6 数据迁移报告

本文简单介绍了如何使用SSMA for Oracle 5.0来帮助我们把一个Oracle数据库迁移到SQL Server数据库,包括迁移评估、Schema迁移以及数据迁移。

软件开发工程师 徐进

Leave a Comment
  • Please add 3 and 3 and type the answer here:
  • Post
  • 如果数据库要求DOWNTIME时间较短,从异构数据库迁移到SQL Server 是否支持增量同步迁移?

    msn:tenwy.tao@hotmail.com

  • oracle已经同步到sqlserver2014了,但是在迁移数据的时候,数据迁移失败,请问哪里可以查看迁移日志,

Page 1 of 1 (2 items)