SQL Server:管理迁移

大规模迁移数据库可以永远不会调用简单的任务,但 Microsoft 可以帮助减轻方式,确保您准备的工具可用。

伟立李

最新小版本的 SQL Server,代号为"德纳",提供了许多令人信服的功能,并将驱动器将移动到 SQL Server 的许多组织。 不过,即使使用性能和总体拥有成本 (TCO) 优势将移动到 SQL Server,一些组织可能有数据库迁移的成本和风险的担忧。

幸运的是,Microsoft 提供了一种工具,SQL 服务器迁移助手 (址),迁移过程自动化。 最新址 v.5.1 (本月与 SQL 服务器德纳具备同时公布) 支持迁移从 Oracle、 Sybase、 MySQL 和访问数据库,SQL Server。 可以使用址减轻您的数据库迁移项目。 例如,这里是从 Oracle 数据库迁移过程看 — — 但过程和步骤都相同时从其他数据库迁移。

评估您的数据库

址自动迁移的大多数数据库对象包括存储的过程、 函数、 包和触发器。 有几个特殊数据类型,如对象类型或空间类型按址的当前版本不受支持的。 此外,您也可能不能自动转换的复杂 PL/SQL 语句。 在您的 Oracle 数据库上运行迁移评估并确定,是否您的数据库架构包含这些语句,可以使用址。

评估摘要报告包含以下信息:

  • **架构树视图:**源 Oracle 数据库架构中的对象的列表。
  • 转化率:址是能够自动转换的语句的百分比。 对于此示例 (请参阅图 1),址工具可以将转换的源 Oracle 架构中的所有语句 99.39%。
  • **对象计数:**的数据库数发现在 Oracle 架构和"错误"的对象的计数 (更上的对象这以后)。
  • **转换邮件摘要:**在迁移源 Oracle 架构时遇到的问题的描述。

有三种类型的你可能会遇到使用址工具迁移过程中的转换邮件: 错误、 警告和信息:

  • 错误消息址不能转换数据库对象或数据库对象中的语句时引发。
  • A警告消息时址是能够转换 Oracle 语句,但转换后的语句可能不会产生相同的结果,对于某些情况下引发。 例如,址将 Oracle SUBSTR() 转换为 SQL 服务器 substring ()。 在大多数情况下,substring () 会返回相同的输出。 有一些,但是,结果的情况下不同。 例如,Oracle SUBSTR() 功能支持负值字符的位置。 SUBSTR('TechNet',-3,3) 返回 '网' Oracle,而 SUBSTRING('TechNet',-3,3) 将在 SQL Server 中返回一个空字符串。
  • 信息消息是址提供有关它如何转换某些对象的其他信息。

图 1看看转化率时转换从 Oracle 数据库。

每个错误消息包含显示包含错误的对象的链接。 也是放在左侧,转换后的语句会什么样在 SQL Server 中的原始语句-并排比较 (请参阅图 2) 在右边。 错误消息还包括多少小时的手动转换通常会解决这一问题所需的估计。

图 2偶尔会迁移错误消息。

大多数组织经常执行大量的 Oracle 数据库架构进行评估。 他们会使用的总的转化率和总估计手动转换时间比较和优先迁移的 Oracle 数据库架构。

转换数据库架构

址为您提供了多个架构转换选项。 例如,您可以修改数据类型映射。 址提供了 Oracle 和 SQL Server 之间的默认数据类型映射。 但是,您可以自定义特定的表,所有表、 特定的对象 (如存储的过程或函数) 或不同的使用 (例如,数据类型的列、 数据类型的变量或过程的输入/输出参数的数据类型) 的数据类型映射。

通过单击"转换模式"按钮,将转换数据库架构。 然后您可以导航到不同的数据库对象和比较原始的架构对象和转换的对象 (请参见图 3)

图 3架构转换的观点。

时对象包含址是无法自动转换的声明,该工具将添加迁移错误说明、 评论特定语句或替换泛型类型。 此分离方法,可以继续进行数据库迁移和以后解决这一问题。

也可以解决问题,并直接从址语句修改。 例如,在图 3,有一个用户定义的函数,称为"使用权"。这将返回 SQL Server 不支持间隔的数据类型。 您可以修改数量的返回类型 (请参见图 4) 和重组的功能。 这将删除该错误,并将返回的值转换为 float(53)。

图 4您可以修改语句中址来解决不兼容性。

您还可以修改转换后的语句。 例如,可以将"float(53)"的返回类型替换"int"。请注意您同址所做的任何修改存储在本地。 源语句所做的更改不会应用于您已在生产中的 Oracle 数据库架构。 同样,目标服务器 SQL 语句所做的任何更改不会立即应用到服务器。 这允许您继续改进,并进行必要的修改,转换后的架构,而不会影响您的目标服务器。

通过右键单击 SQL 服务器元数据资源管理器窗口上的架构名称,可以将转换后的架构部署到目标 SQL Server。 您还可以生成一个脚本来创建的整个架构的信息,然后您可以将其部署到目标服务器 (请参阅图 5)。

图 5部署转换架构以 SQL 服务器。

迁移日期

后在目标 SQL Server 中创建数据库架构,可以使用址迁移 Oracle 数据。 址不是唯一的选择迁移数据,尽管。 您也可以使用 SQL 服务器集成服务 (SSIS)。 不过,同址迁移数据,可以使用相同类型的映射架构转换。 从 Oracle 迁移到 SQL Server 时,它还处理一些常见的数据迁移问题。

例如,Oracle 具有更广泛的支持的日期类型比 SQL Server。 默认情况下,址引发数据迁移错误,当发现这种情况。 你可以有址自动转换与空值或 SQL 服务器可以支持的最近日期范围的日期值。 您可以修改此设置通过工具 |项目设置 |一般 |数据迁移 (请参见图 6)。

图 6有选项用于处理数据迁移错误。

完成数据迁移、 址将后显示的行数与报告的迁移,成功率和迁移的每个表所花费的时间 (请参阅图 7)。

图 7址会给你一个完整的数据迁移报告。

测试数据库迁移

您已经成功地迁移您的数据库后下, 一步是验证。 当从 Oracle 和 Sybase 迁移,址可以源数据库和迁移的数据库进行比较。 您可以定义一系列的测试用例 ; 然后址在源和目标数据库上运行测试用例。 它将比较结果,以及任何变化对基础表进行测试用例。

要定义一个测试用例,从测试菜单中选择新的测试案例。 测试用例向导将引导您完成创建测试用例的过程。 您还可以选择要测试的特定数据库对象。 例如,有一个称为 ADD_EMPLOYEE 的过程。 此过程提供从输入参数的值基于在雇员表中插入新记录。 您可以定义在调用值选项卡通过测试中使用的特定输入的参数 (请参见图 8)。 您可以定义任意多个调用值根据您的需要。

图 8指定调用值的测试用例的向导。

除了比较测试对象执行,址还可以测试对基础表的更改。 例如,当执行 ADD_EMPLOYEE 存储过程,SQL Server 将插入一个附加行雇员表。 址比较在源和目标之间的受影响表中已更改的行。 如果需要,您还可以指定用于比较的粒度级别 (请参见图 9)。

图 9指定的基础表比较。

在确定测试用例中的最后一步是其他设置。 一项重要的设定是否回滚到表测试所做的任何更改 (请参阅图 10)。 在我的示例中,当执行 ADD_EMPLOYEE 存储过程中,新的记录将添加到源数据库和目标 SQL Server 数据库。 如果您选择的数据回滚选项,址将在测试完成后删除插入的值。

Defining test case settings

图 10定义测试用例的设置。

定义测试用例之后, 您可以根据需要多次作为运行。 每次运行,您将收到比较结果的测试结果报告 (请参阅图 11)。

SSMA will give you a full test result report

图 11址会给你一个完整的测试结果报告。

址为您提供了丰富的功能,自动数据库迁移。 评估计划迁移、 转换数据库架构中,数据库的复杂性解决常见的数据库迁移问题、 迁移数据从源数据库并验证迁移的数据库,可以使用该工具。

该工具用于迁移到 SQL Server,但它也支持直接迁移到 SQL Azure (从 MySQL,Sybase 和访问数据库)。 当迁移到 SQL Azure,址考虑到 SQL Azure 平台的帐户要求。 例如,SQL Azure 要求其表具有聚集的索引。 如果源表不包含主键或聚簇的索引,该工具可以自动添加 ROWID 列和列上的聚集的索引设置转换过程中。

你可以下载址从 Microsoft SQL 服务器 Web 站点。 不仅是免费的该工具,您还可以获得免费的电子邮件支持从微软客户服务和支持。 上址的详细信息,请访问址团队博客的视频演示和操作方法的文章,以及指导解决常见的迁移问题。

WellyLee

伟立李与 SQL 服务器迁移助理团队的高级项目经理,是从 Oracle 和 MySQL 数据库迁移工具,到 SQL Server 的功能所有者。 在 2007 年加入微软,之前,他曾担任顾问对数据库解决方案的开发和企业应用程序实现超过 10 年。

相关内容