SQL Server Migration Assistant简介(一)

SQL Server Migration Assistant(简称SSMA)是由微软发布的帮助客户更容易地从Oracle/Sybase/MySQL/Access迁移到SQL Server以及SQL Azure的一个工具集,几周前我们刚刚发布了SSMA 5.0版本,该版本支持了最新的代号为Denali的SQL Server的CTP版本,并且增加了对SQL Azure迁移的支持。下表说明了SSMA 5.0所支持的迁移矩阵:

Migrating From

Using SSMA Tool

To SQL Server (2005, 2008, 2008 R2, “Denali”)

To SQL Azure

Sybase

SSMA for Sybase

√ (New in SSMA 5.0)

Oracle

SSMA for Oracle

MySQL

SSMA for MySQL

Access

SSMA for Access

这里我们选择SSMA for Oracle 5.0为例介绍一下SSMA如何帮助您从Oracle迁移到SQL Server 2008 R2。首先我们从这里下载SSMA for Oracle 5.0的压缩包,解压缩后有两个exe文件,SSMA for Oracle 5.0.exe是工具的安装包,SSMA for Oracle 5.0 Extension Pack.exe必须安装在SQL Server 2008 R2所在服务器,用来创建一些辅助运行需要的数据库表和存储过程等。

首次运行SSMA for Oracle需要一个License,如图1所示,你可以点击链接,然后根据提示填写个人信息后免费申请,下载保存之后返回这个对话框选择你保存License的目录然后点击Refresh License按钮即可运行SSMA for Oracle了。

图1  License Management对话框

在主窗口File菜单中选择New Project…菜单项将显示图2所示的对话框,输入项目的名字,选择SQL Server 2008作为迁移的目标数据库版本。

图2  New Project对话框

我们将使用Oracle XE的HR schema为例(下文称之为HR数据库以避免歧义,但其实Oracle并没有SQL Server数据库类似的概念)。SSMA为提高性能,缺省情况下不加载某些示例数据库(包括HR数据库),这个缺省设置可以通过Project Settings来修改,选择Tools菜单的Project Settings菜单项,在弹出的对话框里点击General再选择Loading System Objects,然后勾选HR,如图3所示。

图3 Project Settings对话框

然后我们连接Oracle服务器,点击工具条上的Connect to Oracle,输入Server名称、SID和用户名/密码,如图4所示。连接后会有个警告对话框告诉你hr用户没有足够的权限。由于我们只需要迁移HR数据库,这里可以点击Continue忽略它。如果你的Oracle服务器上有很多数据库,数据加载可能需要比较长的时间,请耐心等待

图4 连接到Oracle服务器

连接上Oracle后我们首先评估一下迁移HR数据库会不会碰到问题,如果碰到问题大约需要多长时间来解决。评估并不需要连接目标SQL Server,只需要在左上方的树里展开Oracle服务器名称,然后展开Schemas,右键点击HR并选择Create Report,如图5所示。

图5 评估HR数据库

SSMA运行一段时间后会打开一个评估报告的对话框,如图6所示。这个评估报告很有用,里面会列出HR数据库里各种对象(包括函数、包、存储过程、表和视图等)能够成功迁移的比例,你可以在左边的树里选择你需要查看的某个对象,比如存储过程,比较Oracle的PL/SQL语法和迁移后的TSQL语法。

图6 评估报告

图7是一个包含有错误的评估报告,当包含错误时,SSMA会估算手工做转换大约需要多少时间,这样你就可以使用评估报告来帮助你做数据库迁移的时间规划。

图7 一个包含错误的评估报告

(未完待续)

软件开发工程师 徐进