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

适用于:Azure SQL 托管实例

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

在继续操作之前,请完成迁移前步骤。

迁移

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

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

本部分提供以下建议迁移选项的常规迁移步骤

  • 托管实例链接
  • 日志重播服务 (LRS)
  • 本机 RESTORE DATABASE FROM URL,它使用 SQL Server 的本机备份,需要一些停机时间
  • Azure 数据库迁移服务 (DMS),提供几乎零停机时间的迁移
  • Azure Arc 中的 SQL Server 迁移

SQL 托管实例面向需要从本地或 Azure 虚拟机实现上的 SQL Server 进行大规模数据库迁移的用户方案。 当你需要迁移经常使用实例级别和跨数据库功能的应用程序的后端部分时,这是最佳选择。 若采用此方案,可将整个实例转移到 Azure 中对应的环境,而无需重新构建应用程序。

若要移动 SQL Server 实例,需要仔细规划:

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

SQL 托管实例是一项托管服务,可用于将某些常规数据库管理活动委托给平台,因为它们是内置的。 因此,无需迁移某些实例级数据,例如常规备份的维护作业或 AlwaysOn 配置,因为 内置了高可用性

数据库迁移

直接通过 Azure 门户将 Azure Arc 实例启用的 SQL Server 迁移到 Azure SQL 托管实例。 有关详细说明,请参阅 将 SQL Server 实例迁移到 Azure SQL 托管实例

数据库迁移提供内置的迁移体验,使用后台的托管实例链接或日志重播服务(LRS)方法,同时简化迁移过程的配置、管理和监视。

本部分提供使用托管实例链接从 SQL Server 迁移到 Azure SQL 托管实例的高级步骤,此过程的故障时间最短。 有关详细说明,请参阅 “使用链接进行迁移”。

要使用链接进行迁移,请执行以下步骤:

  1. 创建目标 SQL 托管实例: Azure 门户PowerShellAzure CLI
  2. 为链接准备环境
  3. 使用 SSMS脚本配置链接。
  4. 停止工作负载。
  5. 验证目标实例上的数据。
  6. 故障转移链接

日志重播服务 (LRS)

本部分提供从 SQL Server 迁移到 SQL 托管实例的高级步骤,使用日志重播服务(LRS)将停机时间降至最低。 有关详细说明,请查看使用日志重播服务从 SQL Server 迁移数据库

要使用 LRS 进行迁移,请执行以下步骤:

  1. 创建一个带有 Blob 容器Azure 存储帐户
  2. 使用 SAS 令牌或托管标识向 Blob 存储帐户进行身份验证,并验证访问权限。
  3. 如果计划迁移多个数据库,则请务必正确配置文件夹结构
  4. 将备份上传到存储帐户,可以通过复制备份,或者直接使用 备份到 URL 进行备份。
  5. 确定是否要在自动完成或连续模式下运行 LRS。
  6. 启动 LRS。
  7. 监视迁移进度。
  8. 完成迁移(如果处于连续模式中)。

备份和还原

SQL 托管实例的关键功能是能够本机还原.bak中的数据库备份 () 文件。 此功能使数据库迁移变得简单明了。 备份和还原是根据您的数据库大小进行的异步操作。

下图高度概括了该过程:

关系图显示有一个 SQL Server,标有两条箭头: 一条箭头标签为 BACKUP / 上传到 URL 流向 Azure 存储,另一条箭头标签为 RESTORE 从 URL 流出,由 Azure 存储流向 SQL 托管实例。

注意

执行备份、将备份上传到 Azure 存储以及对 SQL 托管实例执行本机还原作的时间取决于数据库的大小。 考虑足够的停机时间,以适应大型数据库的操作。

下表提供了有关可以使用的方法的详细信息,具体取决于正在运行的源 SQL Server 版本:

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

重要

使用本机还原选项将受 透明数据加密保护 的数据库迁移到 SQL 托管实例时,需要先从 SQL Server 实例(本地或 Azure VM 上的 SQL Server)迁移相应的证书,然后再还原数据库。 有关详细信息,请参阅 将受 TDE 保护的数据库的证书迁移到 Azure SQL 托管实例

不支持还原系统数据库。 若要迁移实例级对象(存储在 master 数据库中或 msdb 数据库中),请编写脚本,并在目标实例上运行 Transact-SQL(T-SQL)脚本。

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

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

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

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

    CREATE CREDENTIAL [https://mitutorials.blob.core.windows.net/databases]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
         SECRET = '<secret>'
    
  4. 从 Azure 存储 blob 容器还原备份。 例如:

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

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

注意

数据库还原操作是异步且可重试的。 如果连接中断或超时过期,SSMS 中可能会出现错误。 Azure SQL 数据库一直尝试在后台还原数据库,可以使用 sys.dm_exec_requestssys.dm_operation_status 视图跟踪还原进度。

Azure 数据库迁移服务 (Azure DMS)

本部分提供从 SQL Server 迁移到 SQL 托管实例的高级步骤,使用 Azure DMS 将停机时间降至最低。 有关详细信息,请参阅 教程:联机将 SQL Server 迁移到 Azure SQL 托管实例

若要从 Azure 门户使用 DMS 进行迁移,请执行以下步骤:

  1. 打开 Azure 门户

  2. 打开 Azure DMS,选择 DMS 实例(如果已创建一个),或创建新的实例。

  3. 在 DMS 实例仪表板上,选择“ 开始迁移”,选择源服务器类型,将目标服务器类型设置为 Azure SQL 托管实例,然后选择迁移备份文件存储位置和迁移模式。

  4. 提供 Azure 的源 SQL Server 跟踪详细信息,例如订阅、资源组、位置和 SQL Server 实例名称。 此步骤创建由 Azure Arc 启用的 SQL Server 实例。

  5. 提供目标订阅和资源组,然后选择目标 SQL 托管实例。

  6. 提供备份位置详细信息,例如资源组、存储帐户、Blob 容器、文件夹、最后一个备份文件(用于脱机迁移模式)和目标数据库。

  7. 可选:如果备份在本地网络共享上,请在可以连接到源 SQL Server 的计算机上包含备份文件的位置中下载并安装自承载集成运行时

    1. 可能需要提供源 SQL Server 实例详细信息和凭据才能连接到它。

    2. 此外,选择用于存储备份文件的数据库以及网络 SMB 文件共享的位置,并提供连接到该共享的凭据。

  8. 从 DMS 实例监视仪表板启动数据库迁移并监视 Azure 门户中的进度。

  9. 完成直接转换。

    1. 停止传入源数据库的所有事务。

    2. 更改应用程序配置,使之指向 Azure SQL 托管实例中的目标数据库。

    3. 在指定的备份位置为源数据库执行任何尾日志备份。

    4. 确保所有数据库备份在监视详细信息页中都显示为“还原”状态。

    5. 在监视详细信息页中选择“完成直接转换”。

      有关详细说明,请参阅 教程:使用 DMS 将 SQL Server 迁移到 Azure SQL 托管实例

若要在 Azure Data Studio 中使用 DMS 进行迁移,请执行以下步骤:

  1. 下载并安装 Azure Data Studio 以及适用于 Azure Data Studio 的 Azure SQL 迁移扩展

  2. 在 Azure Data Studio 的扩展中启动迁移到 Azure SQL 迁移向导。

  3. 选择数据库进行评估,并查看迁移就绪性或问题(如果有)。 此外,收集性能数据并获取适当大小的 Azure 建议。

  4. 从订阅中选择 Azure 帐户和目标 Azure SQL 托管实例。

  5. 选择数据库备份的位置。 数据库备份可以位于本地网络共享或 Azure Blob 存储容器中。

  6. 使用 Azure Data Studio 中的向导创建新的 Azure DMS 实例。 如果以前使用 Azure Data Studio 创建了 DMS 实例,则可以根据需要重复使用同一实例。

  7. 可选:如果备份位于本地网络共享上,请在可连接到源 SQL Server 实例的计算机上下载并安装 自承载集成运行时 ,以及包含备份文件的位置。

  8. 在 Azure Data Studio 中启动数据库迁移并监视进度。 还可以在 Azure 门户中的 DMS 资源下监视进度。

  9. 完成直接转换。

    1. 停止传入源数据库的所有事务。

    2. 更改应用程序配置,使之指向 Azure SQL 托管实例中的目标数据库。

    3. 在指定的备份位置为源数据库执行任何尾日志备份。

    4. 确保所有数据库备份在监视详细信息页中都显示为“还原”状态。

    5. 在监视详细信息页中选择“完成直接转换”。

Azure Arc 中的 SQL Server 迁移

通过 Azure 门户将 Azure Arc 启用的 SQL Server 实例迁移到 SQL 托管实例。 SQL 托管实例提供完全托管的 PaaS 解决方案,支持原封不动迁移。 此过程包括评估就绪情况、选择目标、迁移数据和监视进度。

提供了两种集成方法:

  • 用于实现近乎实时复制且停机时间极短的托管实例链接。

  • 日志重播服务,用于连续备份和还原。

Microsoft Copilot 在整个迁移过程中提供帮助。 迁移支持 SQL Server 2012 及更高版本,并自动执行大多数步骤。

有关详细信息,请参阅 迁移到 Azure SQL 托管实例 - Azure Arc 中的 SQL Server 迁移

数据同步和直接转换

使用从源持续复制或同步数据更改的迁移选项时,源数据和架构可以更改和偏离目标。 在数据同步期间,请确保迁移过程捕获并将源上的所有更改应用到目标。

验证了源和目标上的数据相同后,可以从源环境直接转换到目标环境。 与业务和应用程序团队规划割接过程,以确保在割接期间将中断降至最低,而且不会影响业务的延续性。

重要

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

迁移后

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

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

监视和修正应用程序

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

执行测试

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

  1. 开发验证测试:若要测试数据库迁移,请使用 T-SQL 查询。 创建验证查询以针对源数据库和目标数据库运行。 验证查询应涵盖定义的范围。

  2. 设置测试环境:测试环境应包含源数据库和目标数据库的副本。 请确保隔离测试环境。

  3. 运行验证测试:针对源和目标运行验证测试,然后分析结果。

  4. 运行性能测试:针对源和目标运行性能测试,然后分析和比较结果。

使用高级功能

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

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

某些 SQL Server 功能仅在将 数据库兼容性级别 更改为最新的兼容级别时才可用。