迁移指南:SQL Server 到 Azure SQL 数据库

适用于: SQL Server Azure SQL 数据库

在本指南中,了解如何将 SQL Server 实例迁移到 Azure SQL 数据库。

在继续之前完成迁移前的步骤。

Migrate

完成预迁移阶段的步骤后,便可以执行架构和数据迁移。

使用所选的迁移方法迁移你的数据。

使用 Azure Data Studio 的 Azure SQL 迁移扩展进行迁移

若要使用 Azure Data Studio 执行脱机迁移,请按照以下概要步骤操作。 如需详细的分步教程,请参阅教程:将 SQL Server 迁移到 Azure SQL 数据库(脱机)

  1. 下载并安装 Azure Data StudioAzure SQL 迁移扩展
  2. 在 Azure Data Studio 的扩展中启动迁移到 Azure SQL 迁移向导。
  3. 选择数据库进行评估,并查看迁移就绪性或问题(如果有)。 此外,收集性能数据并获取适当大小的 Azure 建议。
  4. 从订阅中选择 Azure 帐户和目标 Azure SQL 数据库。
  5. 选择要迁移的表列表。
  6. 使用 Azure Data Studio 中的向导创建新的 Azure 数据库迁移服务。 如果之前使用 Azure Data Studio 创建了 Azure 数据库迁移服务,则可以根据需要重复使用该服务。
  7. 可选:如果备份在本地网络共享上,请在可以连接到源 SQL Server 的计算机上包含备份文件的位置中下载并安装自承载集成运行时
  8. 在 Azure Data Studio 中启动数据库迁移并监视进度。 也可以在 Azure 门户中的 Azure 数据库迁移服务资源下监视进度。

数据同步和直接转换

当使用将数据更改持续从源复制/同步到目标的迁移选项时,源数据和架构可能会变化并偏离目标。 在数据同步过程中,请确保在迁移过程中捕获对源的所有更改并将其应用到目标。

验证源和目标上的数据是否相同后,可以从源环境直接转换到目标环境。 请务必与业务/应用程序团队一起计划直接转换过程,以确保直接转换过程中的最小中断不会影响业务连续性。

重要

有关在使用 DMS 进行迁移的过程中执行切换的具体步骤的详细信息,请参阅教程:使用 DMS 将 SQL Server 迁移到 Azure SQL 数据库(经典)

使用事务复制进行迁移

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

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

使用事务复制时,对数据或架构所做的所有更改都会显示在 Azure SQL 数据库中的数据库中。 同步完成后,如果你已准备好进行迁移,则可更改应用程序的连接字符串,使其指向数据库。 在事务复制排出源数据库上剩余的所有更改,并且所有应用程序都指向 Azure SQL 数据库之后,可以卸载事务复制。 Azure SQL 数据库中的数据库现在是生产系统。

提示

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

事务复制工作流

重要

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

步骤 方法
设置分发 SQL Server Management Studio | Transact-SQL
创建发布 SQL Server Management Studio | Transact-SQL
创建订阅 SQL Server Management Studio | Transact-SQL

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

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

迁移建议

若要加快迁移到 Azure SQL 数据库的速度,应考虑以下建议:

资源争用 建议
源(通常在本地) 迁移期间在源方面的主要瓶颈是数据文件 I/O 和延迟,需要仔细监视。 根据数据文件 I/O 和延迟,以及它是虚拟机还是物理服务器,你可能需要与存储管理员联系,并探索各种选项来缓解该瓶颈。
目标(Azure SQL 数据库) 最大的限制因素是日志生成速率和数据库日志文件的延迟。 使用 Azure SQL 数据库时,日志生成速率最高可达 96 MB/秒。 要加快迁移速度,请将目标 Azure SQL 数据库纵向扩展到业务关键 Gen5 8 vCore,以获取 96 MB/秒的最大日志生成速率,这也为日志文件提供了低延迟。 无论选择哪种服务级别,超大规模服务层级都提供 100 MB/秒的日志速率。
Network 所需网络带宽等于最大日志引入速率 96 MB/秒(768 Mb/秒) 根据本地数据中心到 Azure 的网络连接情况,检查网络带宽(通常是 Azure ExpressRoute),使其适应最大日志引入速率。

还可考虑以下建议,以在迁移过程中获得最佳性能。

  • 若要获得最高的传输性能,请在预算允许范围内选择最高的服务层级和计算大小。 为了节省资金,可以在迁移完成后缩减规模。
  • 如果使用 BACPAC 文件,尽量缩短 BACPAC 文件和目标数据中心的距离。
  • 在迁移期间禁用自动更新和自动创建数据统计。
  • 分区表和索引。
  • 删除已编制索引的视图,在完成后重新创建这些视图。
  • 将很少查询的历史数据转移到其他数据库,将这些历史数据迁移到 Azure SQL 数据库中的单独数据库。 然后,可以使用 弹性查询来查询这些历史数据。

迁移后

成功完成迁移阶段后,执行以下迁移后任务,确保一切顺利高效地进行。

迁移后阶段对于协调任何数据准确性问题、验证完整性以及解决工作负载的性能问题至关重要。

更新统计信息

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

修正应用程序

将数据迁移到目标环境后,以前使用源的所有应用程序都需要开始使用目标。 在某些情况下,实现这一点需要对应用程序进行更改。

执行测试

数据库迁移的测试方法包括以下活动:

  1. 开发验证测试:要测试数据库迁移,需要使用 SQL 查询。 必须创建针对源数据库和目标数据库运行的验证查询。 验证查询应涵盖已定义的范围。
  2. 设置测试环境:测试环境应包含源数据库和目标数据库的副本。 请确保隔离测试环境。
  3. 运行验证测试:针对源和目标运行验证测试,然后分析结果。
  4. 运行性能测试:针对源和目标运行性能测试,然后分析和比较结果。

使用高级功能

请确保利用 Azure SQL 数据库提供的基于云的高级功能,例如内置高可用性威胁检测以及监视和优化工作负荷

只有将数据库兼容性级别更改为最新的兼容性级别后,某些 SQL Server 功能才可用。

要了解详细信息,请参阅在迁移后管理 Azure SQL 数据库

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

你可能会遇到各种各样的兼容性问题,具体取决于源数据库中的 SQL Server 版本以及正在迁移的数据库复杂性。 旧版 SQL Server 的兼容性问题更多。 除了使用所选搜索引擎的目标 Internet 搜索以外,还可以使用以下资源:

重要

使用 Azure SQL 托管实例可迁移现有 SQL Server 实例及其数据库,而几乎不会出现兼容性问题。 请参阅什么是 Azure SQL 托管实例?