将 SQL Server 数据库迁移到云中的 SQL 数据库

本文介绍两种将 SQL Server 2005 或更高版本的数据库迁移到 Azure SQL 数据库的主要方法。 第一种方法相对简单,但迁移过程中需要一段时间(可能较长)的停机。 第二种方法更复杂,但在迁移过程中的停机时间大大缩短。

两种方法均需使用 Data Migration Assistant (DMA) 确保源数据库与 Azure SQL 数据库兼容。 SQL 数据库 V12 除了要解决服务器级操作和跨数据库操作的相关问题之外,还要解决与 SQL Server 的功能对等性问题。 依赖部分支持或不受支持的函数的数据库和应用程序需要进行某种程度的重新设计来修复这些不兼容性,然后才能迁移 SQL Server 数据库。

Note

若要将非 SQL Server 数据库(包括 Microsoft Access、Sybase、MySQL Oracle 和 DB2)迁移到 Azure SQL 数据库,请参阅 SQL Server 迁移助手

方法 1:在迁移过程中需要停机的迁移

如果可以承受一定的停机时间,或者正在针对以后的迁移执行生产数据库的测试迁移,请使用此方法。 有关教程,请参阅迁移 SQL Server 数据库

以下列表包含使用此方法进行 SQL Server 数据库迁移的常规工作流。

VSSSDT 迁移示意图

  1. 使用最新版 Data Migration Assistant (DMA) 评估数据库的兼容性。
  2. 以 Transact-SQL 脚本形式准备任何所需的修补程序。
  3. 对要迁移的源数据库进行事务一致性复制 - 确保不对源数据库进行进一步的更改(也可在迁移完成后手动应用任何此类更改)。 有许多方法可以使数据库处于静默状态,例如禁用客户端连接以创建数据库快照
  4. 部署 Transact-SQL 脚本,将修补程序应用到数据库副本。
  5. 将数据库副本导出到本地驱动器上的 .BACPAC 文件。
  6. 使用多个 BACPAC 导入工具中的任何一个(若要获得最佳性能,建议使用 SQLPackage.exe 工具),以新 Azure SQL 数据库的形式导入 .BACPAC 文件。

优化迁移过程中的数据传输性能

以下列表包含的建议可帮助你在导入过程中获得最佳性能。

迁移完成后优化性能

在迁移完成后更新统计信息并进行完全扫描。

方法 2:使用事务复制

如果在发生迁移时你无法承受从生产中删除 SQL Server 数据库的后果,可以使用 SQL Server 事务复制作为你的迁移解决方案。 若要使用此方法,源数据库必须满足事务复制要求且兼容 Azure SQL 数据库。

若要使用此解决方案,请将 Azure SQL 数据库配置为要迁移的 SQL Server 实例的订阅服务器。 在新的事务不断发生时,事务复制分发器将对要同步的数据库(发布服务器)中的数据进行同步。

使用事务复制时,对数据或架构所做的所有更改都会显示在 Azure SQL 数据库中。 同步完成后,如果已准备好进行迁移,则可更改应用程序的连接字符串,使其指向 Azure SQL 数据库。 一旦事务复制清空保留在源数据库中的任何更改,并且所有应用程序都指向 Azure DB,即可卸载事务复制。 Azure SQL 数据库现在是用户的生产系统。

SeedCloudTR 示意图

Tip

还可以使用事务复制来迁移源数据库的子集。 复制到 Azure SQL 数据库的发布可以限制为复制的数据库中表的子集。 对于所复制的每一个表,可以将数据限制为行的子集和/或列的子集。

使用事务复制工作流迁移到 SQL 数据库

Important

使用最新版本的 SQL Server Management Studio 以与 Azure 和 SQL 数据库的更新保持同步。 较旧版本的 SQL Server Management Studio 不能将 SQL 数据库设置为订阅服务器。 更新 SQL Server Management Studio

  1. 设置分发
  2. 创建发布
  3. 创建订阅

有关迁移到 SQL 数据库的一些提示和差异

  1. 使用本地分发服务器
    • 这会对服务器的性能造成影响。
    • 如果对性能的影响不可接受,可以使用另一台服务器,但这又会增大管理的复杂性。
  2. 选择快照文件夹时,请确保选择的文件夹足够大,可以保存想要复制的每个表的 BCP。
  3. 快照创建操作在完成之前会锁定关联的表,因此,请适当地计划好快照。
  4. Azure SQL 数据库中仅支持推送订阅。 只能从源数据库添加订阅服务器。

解决数据库迁移的兼容性问题

根据源数据库中的 SQL Server 版本以及正在迁移的数据库复杂性,可能会发现各种不同的不兼容性问题。 旧版 SQL Server 的兼容性问题更多。 除了使用所选搜索引擎的目标 Internet 搜索以外,还可以使用以下资源:

除了搜索 Internet 和使用这些资源,还可以使用 MSDN SQL Server 社区论坛StackOverflow

后续步骤