你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

迁移指南:SQL Server 到 Azure 虚拟机上的 SQL Server

适用于:Azure 上的 SQL Server

本指南介绍如何基于你的要求,通过各种工具和技术来发现、评估用户数据库并将其从 SQL Server 迁移到 Azure 虚拟机上的 SQL Server 实例。

你可以迁移在本地或以下位置运行的 SQL Server:

  • 虚拟机 (VM) 上的 SQL Server。
  • Amazon Web Services (AWS) EC2。
  • Amazon 关系数据库服务 (AWS RDS)。
  • 计算引擎 (Google Cloud Platform [GCP])。

有关其他迁移策略的信息,请参阅 SQL Server VM 迁移概述。 有关其他迁移指南,请参阅 Azure 数据库迁移指南

Diagram that shows a migration process flow.

先决条件

迁移到 Azure 虚拟机上的 SQL Server 需要以下资源:

迁移前

在开始迁移之前,需要先了解 SQL 环境的拓扑并评估所需迁移的可行性。

发现

Azure Migrate 会评估是否适合迁移本地计算机,会根据性能进行大小调整,并提供有关在本地运行的成本估算。 若要规划迁移,请使用 Azure Migrate 来确定现有数据源以及 SQL Server 实例所用功能的相关详细信息。 此过程涉及扫描网络,以使用所用版本和功能标识组织中的所有 SQL Server 实例。

重要

为 SQL Server 实例选择目标 Azure 虚拟机时,请务必考虑 Azure 虚拟机上 SQL Server 的性能准则

有关更多发现工具,请参阅可用于数据迁移方案的服务和工具

评估

从本地 SQL Server 迁移到 Azure 虚拟机上的 SQL Server 时,如果源和目标 SQL Server 版本相同,则不太可能遇到任何兼容性或功能奇偶一致性问题。 如果不升级 SQL Server 的版本,请跳过此步骤并转到迁移部分。

在迁移之前,运行 SQL Server 数据库评估以识别迁移阻止程序(如果有)仍然是一种良好做法,适用于 Azure Data Studio 的 Azure SQL 迁移扩展在迁移之前会执行该操作。

备注

如果要大规模评估 VMware 上的整个 SQL Server 数据资产,请使用 Azure Migrate 获取 Azure SQL 部署建议、目标规模调整和每月估算。

评估用户数据库

适用于 Azure Data Studio 的 Azure SQL 迁移扩展提供了基于向导的无缝体验,来评估、获取 Azure 建议以及将本地 SQL Server 数据库迁移到 Azure 虚拟机上的 SQL Server。 此外,除了突出显示任何迁移障碍或警告外,该扩展还包括一个 Azure 建议选项,用于收集数据库的性能数据来推荐 Azure 虚拟机上适当大小的的 SQL Server,以满足工作负载的性能需求(价格最低)。

若要了解有关 Azure 建议的详细信息,请参阅获取针对本地 SQL Server 数据库的适当大小的 Azure 建议

重要

若要使用 Azure SQL 迁移扩展评估数据库,请确保用于连接源 SQL Server 的登录名是 sysadmin 服务器角色或具有 CONTROL SERVER 权限的成员。

对于版本升级,如果要升级到 Azure 虚拟机上具有更高版本的 SQL Server 实例,请使用数据迁移助手评估本地 SQL Server 实例,以了解源版本和目标版本之间的差距。

评估应用程序

通常,应用程序层访问用户数据库来保存和修改数据。 数据迁移助手可以通过两种方式评估应用程序的数据访问层:

在用户数据库评估期间,使用数据迁移助手导入捕获的跟踪文件或 Data Access Migration Toolkit 文件。

大规模评估

如果有多个服务器需要进行 Azure 迁移就绪性评估,可以使用以下选项之一通过脚本自动执行该过程。 若要详细了解如何使用脚本,请参阅使用自动化大规模迁移数据库

对于跨大型资产的摘要报告,也可以将数据迁移助手评估合并到 Azure Migrate 中

使用数据迁移助手升级数据库

对于升级方案,可能会为你提供一系列建议,以确保用户数据库在升级后能够正常运行。 数据迁移助手提供了有关受影响对象的详细信息以及用于解决每个问题的资源。 在开始生产升级之前,请确保解决所有中断性变更和行为更改。

对于不推荐使用的功能,如果想要避免进行这些更改并加快迁移速度,可以选择在其原始兼容性模式下运行用户数据库。 此操作将阻止升级数据库兼容性,直到解决不推荐使用的项为止。

注意

并非所有 SQL Server 版本都支持所有兼容性模式。 检查目标 SQL Server 版本是否支持所选的数据库兼容性。 例如,SQL Server 2019 不支持兼容性级别为 90 的数据库(也就是 SQL Server 2005)。 这些数据库至少需要升级到兼容性级别 100。

Migrate

完成预迁移步骤后,即可迁移用户数据库和组件。 通过使用首选的迁移方法迁移数据库。

以下部分提供了按优先级顺序执行迁移的选项:

使用适用于 Azure Data Studio 的 Azure SQL 迁移扩展进行迁移(停机时间最短)

若要使用 Azure Data Studio 执行停机时间最短的迁移,请按照以下概要步骤操作。 有关详细分步教程,请参阅使用 Azure Data Studio 将 SQL Server 联机迁移到 Azure 虚拟机上的 SQL Server

  1. 下载并安装 Azure Data StudioAzure SQL 迁移扩展
  2. 在 Azure Data Studio 的扩展中启动“迁移到 Azure SQL”向导。
  3. 选择数据库进行评估,并查看迁移就绪性或问题(如果有)。 此外,收集性能数据并获取适当大小的 Azure 建议。
  4. 从订阅中选择 Azure 帐户和 Azure 计算机上的目标 SQL Server。
  5. 选择数据库备份的位置。 数据库备份可以位于本地网络共享或 Azure Blob 存储容器中。
  6. 使用 Azure Data Studio 中的向导创建新的 Azure 数据库迁移服务。 如果之前使用 Azure Data Studio 创建了 Azure 数据库迁移服务,则可以根据需要重复使用该服务。
  7. 可选:如果备份在本地网络共享上,请在可以连接到源 SQL Server 的计算机上包含备份文件的位置中下载并安装自承载集成运行时
  8. 在 Azure Data Studio 中启动数据库迁移并监视进度。 也可以在 Azure 门户中的 Azure 数据库迁移服务资源下监视进度。
  9. 完成直接转换。
    1. 停止传入源数据库的所有事务。
    2. 更改应用程序配置,使之指向 Azure 虚拟机上 SQL Server 中的目标数据库。
    3. 在指定的备份位置中,为源数据库执行任何结尾日志备份。
    4. 确保所有数据库备份在监视详细信息页中都显示为“还原”状态。
    5. 在监视详细信息页中选择“完成直接转换”。

备份和还原

使用备份和还原执行标准迁移:

  1. 根据你的要求,建立与 Azure 虚拟机上的 SQL Server 的连接。 有关详细信息,请参阅连接到 Azure(资源管理器)上的 SQL Server 虚拟机
  2. 暂停或停止那些使用要迁移的数据库的任何应用程序。
  3. 使用单用户模式确保用户数据库处于非活动状态。
  4. 执行到本地位置的完整数据库备份。
  5. 使用远程桌面、Azure 数据资源管理器AzCopy 命令行实用程序将本地备份文件复制到 VM。 (建议使用大于 2-TB 的备份。)
  6. 将完整的数据库备份还原到 Azure 虚拟机上的 SQL Server。

拆离和从 URL 附加

拆离数据库和日志文件,并将其传输到 Azure Blob 存储。 然后在 Azure VM 上从 URL 附加数据库。 如果希望物理数据库文件驻留在 Blob 存储中,可使用此方法,这可能对非常大的数据库很有用。 使用此手动方法按照下列常规步骤迁移用户数据库:

  1. 从本地数据库实例拆离数据库文件。
  2. 使用 AZCopy 命令行实用工具将分离的数据库文件复制到 Azure Blob 存储。
  3. 从 Azure URL 将数据库文件附加到 Azure VM 中的 SQL Server 实例。

转换为 VM、上传到 URL 并部署为新的 VM

使用此方法可将本地 SQL Server 实例中的所有系统数据库和用户数据库迁移到 Azure 虚拟机。 请使用此手动方法并按照下列常规步骤迁移整个 SQL Server 实例:

  1. 将物理机或虚拟机转换为 Hyper-V VHD。
  2. 使用 Add-AzureVHD cmdlet 将 VHD 文件上传到 Azure 存储。
  3. 使用上传的 VHD 部署新的虚拟机。

注意

若要迁移整个应用程序,请考虑使用 Azure Site Recovery

日志传送

日志传送会将事务日志文件从本地复制到 Azure VM 上的 SQL Server 实例中。 此选项可在故障转移期间最大程度地缩短故障时间,并且配置开销低于设置 Always On 可用性组。

有关详细信息,请参阅日志传送表和存储过程

运送硬盘驱动器

在通过网络上传成本过高或不可行时,可以使用 Windows 导入/导出服务方法将大量文件数据传输到 Azure Blob 存储中。 借助此服务,可以将包含这些数据的一个或多个硬盘驱动器运送到 Azure 数据中心,在那里,数据将上传到存储帐户中。

迁移用户数据库外部的对象

要在迁移后无缝操作用户数据库,可能还需要更多 SQL Server 对象。

下表提供了可在迁移用户数据库之前或之后完成的一系列组件和建议的迁移方法。

功能 组件 迁移方法
数据库 建模 使用 SQL Server Management Studio 编写脚本。
数据库 计划将 tempdb 移动到 Azure VM 临时磁盘 (SSD) 以获得最佳性能。 请确保选择具有足够的本地 SSD 的 VM 大小来容纳 tempdb
具有文件流的用户数据库 使用备份和还原方法进行迁移。 数据迁移助手文件流不支持数据库。
安全性 SQL Server 和 Windows 登录名 使用数据迁移助手迁移用户登录名
SQL Server 角色 使用 SQL Server Management Studio 编写脚本。
加密提供程序 建议改用 Azure Key Vault。 此过程使用 SQL VM 资源提供程序
服务器对象 备份设备 通过 Azure 备份用数据库备份进行替换,或将备份写入 Azure 存储(SQL Server 2012 SP1 CU2 及更高版本)。 此过程使用 SQL VM 资源提供程序
链接服务器 使用 SQL Server Management Studio 编写脚本。
服务器触发器 使用 SQL Server Management Studio 编写脚本。
复制 本地发布 使用 SQL Server Management Studio 编写脚本。
本地订阅服务器 使用 SQL Server Management Studio 编写脚本。
PolyBase PolyBase 使用 SQL Server Management Studio 编写脚本。
Management 数据库邮件 使用 SQL Server Management Studio 编写脚本。
SQL Server 代理 作业 使用 SQL Server Management Studio 编写脚本。
警报 使用 SQL Server Management Studio 编写脚本。
运算符 使用 SQL Server Management Studio 编写脚本。
代理 使用 SQL Server Management Studio 编写脚本。
操作系统 文件存储、文件共享 记下 SQL Server 使用的任何其他文件或文件共享并在 Azure 虚拟机目标上对其进行复制。

迁移后

成功完成迁移阶段后,需要完成一系列的迁移后任务,确保一切都能尽量顺畅高效地正常进行。

修正应用程序

将数据迁移到目标环境后,以前使用源的所有应用程序都需要开始使用目标。 在某些情况下,需要对应用程序进行更改才能完成此任务。

将数据迁移助手推荐的所有修补程序应用于用户数据库。 需要编写这些修补程序的脚本,以确保一致性和允许自动化。

执行测试

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

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

提示

借助数据库实验助手评估目标 SQL Server 的性能。

优化

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

有关这些问题的详细信息和用于缓解这些问题的步骤,请参阅:

后续步骤

若要检查适用于 SQL Server 的服务的可用性,请参阅 Azure 全球基础结构中心

有关在执行各种数据库和数据迁移方案及专门任务时可为你提供帮助的 Microsoft 与第三方服务和工具的矩阵,请参阅数据迁移服务和工具

若要详细了解 Azure SQL,请参阅:

有关云迁移的框架和采用周期的详细信息,请参阅:

有关许可的信息,请参阅:

若要评估应用程序访问层,请参阅 Data Access Migration Toolkit(预览版)

有关如何执行数据访问层 A/B 测试的信息,请参阅数据库实验助手概述