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

迁移指南:将 SQL Server 到 Azure SQL 托管实例

适用于:Azure SQL 托管实例

本指南帮助你将 SQL Server 实例迁移至 Azure SQL 托管实例。

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

  • 虚拟机上的 SQL Server
  • Amazon EC2 (Elastic Compute Cloud)
  • 适用于 SQL Server 的 Amazon RDS(关系数据库服务)
  • Google Compute Engine
  • Cloud SQL for SQL Server - GCP (Google Cloud Platform)

如需更多迁移信息,请参阅迁移概述。 有关其他迁移指南,请参阅数据库迁移

Migration process flow

先决条件

若要将 SQL Server 迁移至 Azure SQL 托管实例,请确保已执行以下操作:

迁移前

验证你的源环境是否受支持后,开始预迁移阶段。 发现所有现有数据源,评估迁移可行性,确定可能会妨碍迁移的任何阻碍性问题。

发现

在“发现”阶段,扫描网络以查明你的组织使用的所有 SQL Server 实例和功能。

使用 Azure Migrate 来评估本地服务器的迁移适用性,执行基于性能的大小调整,并为提供在 Azure 中运行服务器的成本估算。

或者,使用 Microsoft 评估和规划工具包(“MAP 工具包”)来评估当前的 IT 基础结构。 该工具包提供了功能强大的清单、评估和报告工具,可以简化迁移规划过程。

若要详细了解可用于“发现”阶段的工具,请参阅可用于数据迁移方案的服务和工具

发现数据源后,评估可迁移到 Azure SQL 托管实例的任何本地 SQL Server 实例,以确定迁移阻碍或兼容性问题。 继续执行以下步骤来评估数据库并将其迁移到 Azure SQL 托管实例:

Steps for migration to Azure SQL Managed Instance

评估

备注

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

确定 SQL 托管实例是否与应用程序的数据库要求相符。 SQL 托管实例旨在轻松地直接迁移大多数使用 SQL Server 的现有应用程序。 但是,有时可能需要用到一些目前尚不支持的功能,而实现某种解决方法的成本过高。

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

可以使用适用于 Azure Data Studio 的 Azure SQL 迁移扩展来评估数据库以获取:

若要使用 Azure SQL 迁移扩展来评估你的环境,请执行以下步骤:

  1. 打开适用于 Azure Data Studio 的 Azure SQL 迁移扩展
  2. 连接到 SQL Server 源实例
  3. 在 Azure Data Studio 的“Azure SQL 迁移”向导中,单击“迁移到 Azure SQL”按钮
  4. 选择要评估的数据库,然后单击“下一步”
  5. 选择 Azure SQL 目标,在本例中为 Azure SQL 托管实例
  6. 单击“查看/选择”可查看评估报告
  7. 查找迁移阻塞和功能奇偶一致性问题。 还可以将评估报告导出到文件,以便与组织中的其他团队或人员共享。
  8. 确定可以最大程度地减少迁移后工作的数据库兼容性级别。

若要使用 Azure SQL 迁移扩展获取 Azure 建议,请执行以下步骤:

  1. 打开适用于 Azure Data Studio 的 Azure SQL 迁移扩展
  2. 连接到 SQL Server 源实例
  3. 在 Azure Data Studio 的“Azure SQL 迁移”向导中,单击“迁移到 Azure SQL”按钮
  4. 选择要评估的数据库,然后单击“下一步”
  5. 选择 Azure SQL 目标,在本例中为 Azure SQL 托管实例
  6. 导航到 Azure 建议部分,单击“获取 Azure 建议”
  7. 选择“立即收集性能数据”。 在本地计算机上选择一个文件夹用于存储性能日志,然后选择“开始”。
  8. 10 分钟后,Azure Data Studio 将指示有适用于Azure SQL 托管实例的建议。
  9. 在 Azure SQL 目标面板中检查“Azure SQL 托管实例”卡,查看 Azure SQL 托管实例 SKU 建议

如需了解详细信息,请查看教程:使用 Azure Data Studio 将 SQL Server 联机迁移到 Azure SQL 托管实例

如需了解详细信息,请查看教程:使用 Azure Data Studio 将 SQL Server 脱机迁移到 Azure SQL 托管实例

如果评估遇到多个阻碍,确认你的数据库未针对 Azure SQL 托管实例做好准备,则还可以考虑:

规模化评估和分析

适用于 Azure Data StudioAzure Migrate 的 Azure SQL 迁移扩展支持执行缩放评估和合并评估报告以供分析。

如果你有多个服务器和数据库需要进行规模化评估和分析(用于提供更广泛的数据资产视图),请参阅以下链接来了解详细信息:

重要

还可以使用 DMA 命令行实用程序自动对多个数据库运行大规模评估,并将结果上传到 Azure Migrate 以进一步进行分析和目标准备。

部署到大小最适合的托管实例

可以使用适用于 Azure Data Studio 的 Azure SQL 迁移扩展来获取适当大小的 Azure SQL 托管实例建议。 该扩展从源 SQL Server 实例收集性能数据,旨在提供适当大小的 Azure 建议,以最低成本满足工作负载的性能需求。 若要了解详细信息,请参阅获取针对本地 SQL Server 数据库的适当大小的 Azure 建议

根据发现和评估阶段中的信息,创建适当大小的目标 SQL 托管实例。 为此,你可以使用 Azure 门户PowerShellAzure 资源管理器 (ARM) 模板

SQL 托管实例是为要迁移到云中的本地工作负载量身定制的。 它引入了一个购买模型,这让你在为工作负载选择适当的资源级别时更具灵活性。 在本地环境中,你可能习惯于使用物理核心和 IO 带宽来调整这些工作负载的大小。 托管实例的购买模型以虚拟核心 (vCore) 为依据,同时单独提供更多存储和 IO 资源。 借助 vCore 模型可以更方便地根据当前在本地使用的计算资源,来了解云中的计算要求。 使用此购买模型可以适当地调整云中目标环境的大小。 下面介绍了一些可帮助你选择适当服务层级和特征的常规指导:

  • 根据基线 CPU 使用率,可以预配一个与 SQL Server 上使用的核心数匹配的托管实例,但请注意,可能需要缩放 CPU 特征才能匹配安装了托管实例的 VM 的特征
  • 根据基线内存使用率选择具有匹配内存的服务层级。 无法直接选择内存量,因此,需要选择 vCore 数目与内存匹配(例如,在标准系列 (Gen5) 中为 5.1 GB/vCore)的托管实例。
  • 根据文件子系统的基线 IO 延迟,在“常规用途”(延迟大于 5 毫秒)与“业务关键”(延迟小于 3 毫秒)服务层级之间进行选择。
  • 根据基线吞吐量预先分配数据或日志文件的大小,以获得预期的 IO 性能。

可在部署时选择计算和存储资源,稍后再使用 Azure 门户对其进行更改,而不必让应用程序关闭:

Managed Instance Sizing

若要了解如何创建 VNet 基础结构和托管实例,请参阅创建托管实例

重要

请务必根据托管实例 VNet 要求保留目标 VNet 和子网。 任何不兼容性问题都可能导致无法创建新实例或使用已创建的实例。 详细了解如何新建网络和配置现有网络。

迁移

完成与预迁移阶段相关联的任务后,便可以执行架构和数据迁移。

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

SQL 托管实例面向需要从本地或 Azure VM 数据库实现迁移大量数据库的用户方案。 如果需要直接迁移定期使用实例级功能和/或跨数据库功能的应用程序的后端,则托管实例是最佳选择。 若采用此方案,可将整个实例转移到 Azure 中对应的环境,而无需重新构建应用程序。

若要转移 SQL 实例,需要认真规划:

  • 迁移需要并置的所有数据库(在同一个实例上运行的数据库)。
  • 迁移应用程序依赖的实例级对象,包括登录名、凭据、SQL 代理作业和操作员,以及服务器级触发器。

SQL 托管实例是一项托管服务,可便于将一些常规 DBA 活动委托给平台,就像平台中已内置这些活动一样。 因此,不需要迁移某些实例级数据,例如日常备份的维护作业或 Always On 配置,因为系统中内置了高可用性

本文介绍了两个建议的迁移选项:

  • 适用于 Azure Data Studio 的 Azure SQL 迁移扩展 - 几乎无需停机即可实现迁移。
  • 本机 RESTORE DATABASE FROM URL - 使用来自 SQL Server 的本机备份,且需要停机一段时间。

本指南介绍了两个最常用的选项 - Azure 数据库迁移服务 (DMS) 以及本机备份和还原。

有关其他迁移工具,请参阅比较迁移选项

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

若要使用 Azure Data Studio 执行停机时间最短的迁移,请按照以下概要步骤操作。 有关详细分步教程,请参阅使用 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. 选择数据库备份的位置。 数据库备份可以位于本地网络共享或 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 托管实例中的目标数据库。
    3. 在指定的备份位置中,为源数据库执行任何结尾日志备份。
    4. 确保所有数据库备份在监视详细信息页中都显示为“还原”状态。
    5. 在监视详细信息页中选择“完成直接转换”。

备份和还原

可让 Azure SQL 托管实例实现快速轻松的数据库迁移的关键功能之一是对存储在 Azure 存储上的数据库备份 (.bak) 文件进行本机还原。 备份和还原是基于数据库大小的异步操作。

下图高度概括了该过程:

Diagram shows SQL Server with an arrow labeled BACKUP / Upload to URL flowing to Azure Storage and a second arrow labeled RESTORE from URL flowing from Azure Storage to a SQL Managed Instance.

注意

进行备份、将其上传到 Azure 存储以及对 Azure SQL 托管实例执行本机还原操作所花的时间取决于数据库大小。 请为针对大数据库的操作预留足够的停机时间。

下表提供了可以根据所运行的源 SQL Server 版本使用的方法的详细信息:

步骤 SQL 引擎和版本 备份/还原方法
将备份放入 Azure 存储 早于 2012 SP1 CU2 将 .bak 文件直接上传到 Azure 存储
2012 SP1 CU2 - 2016 使用已弃用的 WITH CREDENTIAL 语法直接备份
2016 和更高版本 使用 WITH SAS CREDENTIAL 直接备份
从 Azure 存储还原到托管实例 使用 SAS CREDENTIAL 执行 RESTORE FROM URL

重要

  • 使用本机还原选项将透明数据加密保护的数据库迁移到托管实例时,需要先迁移本地或 Azure VM SQL Server 中的相应证书,再还原数据库。 有关详细步骤,请参阅将 TDE 证书迁移到托管实例
  • 不支持还原系统数据库。 若要迁移实例级对象(存储在 mastermsdb 数据库中),建议编写 T-SQL 脚本,并在目标实例上运行这些脚本。

要使用备份和还原进行迁移,请执行以下步骤:

  1. 将数据库备份到 Azure Blob 存储。 例如,在 SQL Server Management Studio 中使用备份到 URL。 使用 Microsoft Azure Tools 支持早于 SQL Server 2012 SP1 CU2 的数据库。

  2. 使用 SQL Server Management Studio 连接到 Azure SQL 托管实例。

  3. 使用共享访问签名创建凭据,以通过数据库备份访问 Azure Blob 存储帐户。 例如:

    CREATE CREDENTIAL [https://mitutorials.blob.core.windows.net/databases]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE'
    , SECRET = 'sv=2017-11-09&ss=bfqt&srt=sco&sp=rwdlacup&se=2028-09-06T02:52:55Z&st=2018-09-04T18:52:55Z&spr=https&sig=WOTiM%2FS4GVF%2FEEs9DGQR9Im0W%2BwndxW2CQ7%2B5fHd7Is%3D'
    
  4. 从 Azure 存储 blob 容器还原备份。 例如:

    RESTORE DATABASE [TargetDatabaseName] FROM URL =
      'https://mitutorials.blob.core.windows.net/databases/WideWorldImporters-Standard.bak'
    
  5. 还原完成后,请在 SQL Server Management Studio 的“对象资源管理器”中查看数据库。

若要详细了解此迁移选项,请参阅使用 SSMS 将数据库还原到 Azure SQL 托管实例

注意

数据库还原操作是异步且可重试的。 如果连接中断或某些超时过期,SQL Server Management Studio 中可能会显示错误。 Azure SQL 数据库将在后台继续尝试还原数据库,可以使用 sys.dm_exec_requestssys.dm_operation_status 视图来跟踪还原进度。

数据同步和直接转换

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

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

重要

有关与使用 DMS 进行迁移时执行直接转换相关的特定步骤的详细信息,请参阅执行直接转换迁移

迁移后

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

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

监视和修正应用程序

迁移到托管实例后,应跟踪应用程序的行为和工作负载的性能。 此过程包括以下活动:

执行测试

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

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

使用高级功能

可以充分利用 SQL 托管实例提供的基于云的高级功能,例如内置高可用性威胁检测以及监视和优化工作负载

使用 Azure SQL Analytics 可以集中监视大量托管实例。

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

后续步骤