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

教程:在 Azure Data Studio 中将 SQL Server 联机迁移到 Azure SQL 托管实例

使用 Azure Data Studio 中的 Azure SQL 迁移扩展将数据库从 SQL Server 实例迁移到 Azure SQL 托管实例,此过程只会造成极短的停机时间。 有关可能需要一些手动操作的方法,请参阅将 SQL Server 实例迁移到 Azure SQL 托管实例一文。

在本教程中,你将配合使用 Azure Data Studio 和 Azure 数据库迁移服务 (DMS),以将 AdventureWorks 数据库从 SQL Server 的本地实例迁移到 Azure SQL 托管实例,此过程只会造成极短的停机时间。 本教程重点介绍联机迁移模式,在此模式下,仅在迁移结束时的短暂转换期间会出现应用程序停机。

在本教程中,你将了解:

  • 在 Azure Data Studio 中启动“迁移到 Azure SQL”向导
  • 对源 SQL Server 数据库运行评估
  • 从源 SQL Server 收集性能数据
  • 获得最适合工作负载的 Azure SQL 托管实例 SKU 的建议
  • 指定源 SQL Server、备份位置和目标 Azure SQL 托管实例的详细信息
  • 创建新的 Azure 数据库迁移服务,并安装自承载集成运行时以访问源服务器和备份
  • 开始迁移并监视迁移的进度
  • 准备就绪后执行迁移直接转换

重要

为迁移做好准备并尽量缩短联机迁移过程的持续时间,以便将实例重新配置或计划内维护造成的中断风险降到最低。 如果发生此类事件,迁移过程将从头开始。 计划内维护有 36 小时的宽限期,在此期限内,在重新开始迁移过程之前,将会保留目标 Azure SQL 托管实例配置或维护内容。

提示

在 Azure 数据库迁移服务中,可以脱机或联机迁移数据库。 使用脱机迁移时,应用程序停机时间从迁移开始时算起。 若要将停机时间限制为迁移后直接转换到新环境所需的时间,请使用联机迁移。 建议测试脱机迁移,以确定停机时间是否可接受。 如果无法接受预期的停机时间,请进行联机迁移。

本文介绍如何将数据库从 SQL Server 联机迁移到 Azure SQL 托管实例。 若要进行脱机数据库迁移,请参阅将 Azure Data Studio 和 DMS 配合使用,以将 SQL Server 脱机迁移到 Azure SQL 托管实例

先决条件

要完成本教程,需要:

  • 下载并安装 Azure Data Studio

  • 从 Azure Data Studio 市场安装 Azure SQL 迁移扩展

  • 有一个 Azure 帐户,该帐户已分配给下列内置角色之一:

    • 目标 Azure SQL 托管实例(以及从 SMB 网络共享上传数据库备份文件的存储帐户)的参与者。
    • 包含目标 Azure SQL 托管实例或 Azure 存储帐户的 Azure 资源组的读者角色。
    • Azure 订阅的“所有者”或“参与者”角色(创建新的 DMS 服务时需要)。
    • 如果不使用上述内置角色,也可以分配此文中定义的自定义角色。

    重要

    Azure 帐户仅在配置迁移步骤时需要,迁移向导中的评估或 Azure 建议步骤不需要。

  • 创建目标 Azure SQL 托管实例

  • 确保用于连接源 SQL Server 的登录名是 sysadmin 服务器角色或具有 权限的成员。

  • 为完整数据库和事务日志备份文件使用以下存储选项之一:

    • SMB 网络共享
    • Azure 存储帐户文件共享或 blob 容器

    重要

    • 适用于 Azure Data Studio 的 Azure SQL 迁移扩展不会进行数据库备份,也不会代表你启动任何数据库备份。 实际上,该服务使用现有数据库备份文件进行迁移。
    • 如果数据库备份文件在 SMB 网络共享中提供,请创建一个 Azure 存储帐户,该帐户允许 DMS 服务上传数据库备份文件。 请务必在创建 Azure 数据库迁移服务实例的同一区域创建 Azure 存储帐户。
    • 可以将每个备份写入单个独立的备份文件或多个备份文件。 但是,不支持将多个备份(即完整备份和 t-log 备份)追加到单个备份介质中。
    • 使用压缩的备份来减少遇到与迁移大型备份相关的潜在问题的可能性。
  • 确保运行源 SQL Server 实例的服务帐户对包含数据库备份文件的 SMB 网络共享具有读取和写入权限。

  • 在迁移数据之前,需要将源 SQL Server 实例证书从受透明数据加密 (TDE) 保护的数据库迁移到目标 Azure SQL 托管实例或 Azure 虚拟机上的 SQL Server。 有关迁移已启用 TDE 的数据库的详细信息,请参阅教程:将已启用 TDE 的数据库(预览版)迁移到 Azure Data Studio 中的 Azure SQL

    提示

    如果数据库包含受 Always Encrypted 保护的敏感数据,则将 Azure Data Studio 与 DMS 配合使用的迁移过程会自动将你的 Always Encrypted 密钥迁移到目标 Azure SQL 托管实例或 Azure 虚拟机上的 SQL Server。

  • 如果数据库备份在网络文件共享中,请提供计算机以安装自承载集成运行时,以访问和迁移数据库备份。 迁移向导提供下载链接和身份验证密钥,用于下载和安装自承载集成运行时。 在为迁移做准备时,请确保计划安装自承载集成运行时的计算机启用了以下出站防火墙规则和域名:

    域名 出站端口 说明
    公有云:{datafactory}.{region}.datafactory.azure.net
    *.frontend.clouddatahub.net
    Azure 政府版:{datafactory}.{region}.datafactory.azure.us
    中国:{datafactory}.{region}.datafactory.azure.cn
    443 自承载集成运行时连接到数据迁移服务时需要此端口。
    对于在公有云中新创建的数据工厂,请从自承载集成运行时密钥(格式为 {datafactory}.{region}.datafactory.azure.net)查找 FQDN。 对于旧数据工厂,如果在自承载集成密钥中找不到 FQDN,请改用 *.frontend.clouddatahub.net。
    download.microsoft.com 443 自承载集成运行时下载更新时需要此端口。 如果已禁用自动更新,则可以跳过对此域的配置。
    *.core.windows.net 443 由连接到 Azure 存储帐户的自承载集成运行时使用,用于从网络共享上传数据库备份

    提示

    如果数据库备份文件已在 Azure 存储帐户中提供,则在迁移过程中不需要自承载集成运行时。

  • 使用自承载集成运行时时,请确保安装了运行时的计算机可以连接到源 SQL Server 实例和备份文件所在的网络文件共享。 应该启用出站端口 445,以允许访问网络文件共享。 另请参阅有关使用自承载集成运行时的建议

  • 如果是首次使用 Azure 数据库迁移服务,请确保在订阅中注册了 Microsoft.DataMigration 资源提供程序。 可以按照步骤注册资源提供程序

在 Azure Data Studio 中启动“迁移到 Azure SQL”向导

  1. 打开 Azure Data Studio 并选择服务器图标以连接到本地 SQL Server(或 Azure 虚拟机上的 SQL Server)。
  2. 在服务器连接上,右键单击并选择“管理”。
  3. 在服务器的主页上,选择“Azure SQL 迁移”扩展。
  4. 在“Azure SQL 迁移”仪表板上,选择“迁移到 Azure SQL”以启动迁移向导。 Launch Migrate to Azure SQL wizard
  5. 在向导的第一页中可启动新会话或恢复以前保存的会话。 选择第一个选项以启动新会话。

运行数据库评估、收集性能数据并获得 Azure 建议

  1. 选择要对其运行评估的数据库,然后选择“下一步”。
  2. 选择“Azure SQL 托管实例”作为目标。 Assessment confirmation
  3. 选择“查看/选择”按钮查看数据库评估结果的详细信息,选择要迁移的数据库,然后选择“确定” 。 如果评估结果中显示了任何问题,则需要在继续执行后续步骤之前修正这些问题。 Database assessment details
  4. 选择“获取 Azure 建议”按钮。
  5. 选择“立即收集性能数据”选项并输入要收集的性能日志的路径,然后选择“开始”按钮。
  6. Azure Data Studio 现在将收集性能数据,直到你停止收集、按向导中的“下一步”按钮或关闭 Azure Data Studio。
  7. 10 分钟后,你会看到 Azure SQL 托管实例的建议配置。 你也可以在初始 10 分钟后按“刷新建议”链接,以使用收集的额外数据刷新建议。
  8. 在上面的“Azure SQL 托管实例”*框中,选择“查看详细信息”按钮以了解有关你的建议的详细信息。
  9. 关闭“查看详细信息”框并按“下一步”按钮。

配置迁移设置

  1. 从相应的下拉列表中选择订阅、位置和资源组来指定 Azure SQL 托管实例,然后选择“下一步”。
  2. 选择“联机迁移”作为迁移模式。

    注意

    在联机迁移模式下,在目标 Azure SQL 托管实例上持续还原数据库备份时,源 SQL Server 数据库可以用于读取和写入活动。 应用程序停机时间限制为迁移结束时的直接转换持续时间。

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

    注意

    如果数据库备份是在本地网络共享中提供的,DMS 会要求你在向导的下一步安装自承载集成运行时。 如果需要一个自承载集成运行时来访问源数据库备份,请检查备份集的有效性并将其上传到 Azure 存储帐户。
    如果数据库备份已在 Azure 存储 Blob 容器中,则无需安装自承载集成运行时。

  • 对于网络共享上的备份,请提供源 SQL Server、源备份位置、目标数据库名称和要将备份文件上传到的 Azure 存储帐户的以下详细信息:

    字段 说明
    源凭据 - 用户名 用于连接到源 SQL Server 实例并验证备份文件的凭据(Windows / SQL身份验证)。
    源凭据 - 密码 用于连接到源 SQL Server 实例并验证备份文件的凭据(Windows / SQL身份验证)。
    包含备份的网络共享位置 包含完整备份文件和事务日志备份文件的网络共享位置。 在迁移过程中,将自动忽略网络共享中不属于有效备份集的任何无效文件或备份文件。
    拥有网络共享位置读取权限的 Windows 用户帐户 拥有网络共享读取权限以检索备份文件的 Windows 凭据(用户名)。
    密码 拥有网络共享读取权限以检索备份文件的 Windows 凭据(密码)。
    目标数据库名称 如果要在迁移过程中更改目标上的数据库名称,可以修改目标数据库名称。
    存储帐户详细信息 备份文件上传到的资源组和存储帐户。 无需创建容器,因为在上传过程中,DMS 会在指定的存储帐户中自动创建 Blob 容器。
  • 对于存储在 Azure 存储 Blob 容器中的备份,请从相应的下拉列表中指定目标数据库名称、资源组、Azure 存储帐户和 Blob 容器的以下详细信息。

    字段 说明
    目标数据库名称 如果要在迁移过程中更改目标上的数据库名称,可以修改目标数据库名称。
    存储帐户详细信息 备份文件所在的资源组、存储帐户和容器。

    重要

    如果启用了环回检查功能,并且源 SQL Server 和文件共享位于同一台计算机上,则源将无法使用 FQDN 访问文件共享。 若要解决此问题,请按照此处的说明禁用环回检查功能

  • 适用于 Azure Data Studio 的 Azure SQL 迁移扩展不再要求对 Azure 存储帐户网络设置进行特定配置即可将 SQL Server 数据库迁移到 Azure。 但是,根据数据库备份位置和所需的存储帐户网络设置,需要执行几个步骤来确保资源可以访问 Azure 存储帐户。 有关各种迁移方案和网络配置,请参阅下表:

    方案 SMB 网络共享 Azure 存储帐户容器
    已从所有网络启用 无额外步骤 无额外步骤
    已从所选虚拟网络和 IP 地址启用 请参阅 1a 请参阅 2a
    已从所选虚拟网络和 IP 地址启用 + 专用终结点 请参阅 1b 请参阅 2b

    1a - Azure Blob 存储网络配置

    如果在 Azure VM 上安装了自承载集成运行时 (SHIR),请参阅 1b - Azure Blob 存储网络配置部分。 如果在本地网络上安装了自承载集成运行时 (SHIR),则需要在 Azure 存储帐户中添加托管计算机的客户端 IP 地址,如下所示:

    Screenshot that shows the storage account network details

    若要应用此特定配置,请从 SHIR 计算机连接到 Azure 门户,打开 Azure 存储帐户配置,选择“网络”,然后选中“添加客户端 IP 地址”复选框。 选择“保存”以使更改永久生效。 有关剩余步骤,请参阅 2a - Azure Blob 存储网络配置(专用终结点)部分。

    1b - Azure Blob 存储网络配置

    如果你的 SHIR 托管在 Azure VM 上,则需要将 VM 的虚拟网络添加到 Azure 存储帐户,因为虚拟机具有无法添加到 IP 地址范围部分的非公共 IP 地址。

    Screenshot that shows the storage account network firewall configuration.

    若要应用此特定配置,请找到 Azure 存储帐户,从“数据存储”面板中选择“网络”,然后选中“添加现有虚拟网络”复选框。 此时会打开一个新面板,选择托管 Integration Runtime 的 Azure VM 的订阅、虚拟网络和子网。 可在 Azure 虚拟机的概述页面上找到此信息。 子网可能会显示“需要服务终结点”,如果是这样,请选择“启用”。 一切准备就绪后,请保存更新。 有关剩余的所需步骤,请参阅 2a - Azure Blob 存储网络配置(专用终结点)部分。

    2a - Azure Blob 存储网络配置(专用终结点)

    如果你的备份直接放置在 Azure 存储容器中,则不需要执行上述任何步骤,因为没有 Integration Runtime 与 Azure 存储帐户通信。 但是,我们仍需要确保目标 SQL Server 实例能够与 Azure 存储帐户通信,以便从容器还原备份。 若要应用此特定配置,请按照 1b - Azure Blob 存储网络配置部分中的说明进行操作,在填写“添加现有虚拟网络”弹出窗口时指定目标 SQL 实例虚拟网络。

    2b - Azure Blob 存储网络配置(专用终结点)

    如果在 Azure 存储帐户上设置了专用终结点,请按照 2a - Azure Blob 存储网络配置(专用终结点)部分中所述的步骤进行操作。 但是,需要选择专用终结点的子网,而不只是目标 SQL Server 子网。 确保专用终结点托管在与目标 SQL Server 实例相同的 VNet 中。 如果不是,请使用 Azure 存储帐户配置部分中的过程创建另一个专用终结点。

创建 Azure 数据库迁移服务

  1. 创建新的 Azure 数据库迁移服务或重用之前创建的现有服务。

    注意

    如果以前使用 Azure 门户创建了 DMS,则不能在 Azure Data Studio 中提供的迁移向导中重复使用此 DMS。 只能重用以前使用 Azure Data Studio 创建的 DMS。

  2. 在“资源组”处,可以选择现有 DMS 或需要创建新的 DMS。 “Azure 数据库迁移服务”下拉列表列出了所选资源组内的所有现有 DMS。
  3. 若要重用现有 DMS,请从下拉列表中选择它,自承载集成运行时的状态将显示在页面底部。
  4. 若要创建新的 DMS,请选择“新建”。 在“创建 Azure 数据库迁移服务”屏幕上提供 DMS 的名称,并选择“创建” 。
  5. 成功创建 DMS 后,“安装集成运行时”处会提供详细信息供你安装集成运行时。
  6. 选择“下载并安装集成运行时”以在 Web 浏览器中打开下载链接。 完成下载。 在满足先决条件的计算机上安装集成运行时,具体条件是计算机需连接到源 SQL Server 和包含源备份的位置。
  7. 安装完成后,Microsoft Integration Runtime Configuration Manager 将自动启动以开始注册过程。
  8. 复制并粘贴 Azure Data Studio 中向导屏幕提供的身份验证密钥。 如果身份验证密钥有效,Integration Runtime Configuration Manager 中会显示绿色复选图标,指示可以继续注册。
  9. 成功完成自承载集成运行时的注册后,关闭 Microsoft Integration Runtime Configuration Manager 并切换回 Azure Data Studio 中的迁移向导。
  10. 在 Azure Data Studio 的“创建 Azure 数据库迁移服务”屏幕中选择“测试链接”来验证新建的 DMS 是否连接到新注册的自承载集成运行时 。 Test connection integration runtime
  11. 查看迁移摘要并选择“完成”以启动数据库迁移。

监视迁移

  1. 在“数据库迁移状态”中,可以跟踪正在进行的迁移、已完成的迁移和失败的迁移(如果有)。

    monitor migration dashboard

  2. 选择“正在进行的数据库迁移”来查看正在进行的迁移,选择数据库名称可获取更多详细信息。

  3. “迁移详细信息”页显示备份文件和相应状态:

    状态 说明
    已到达 备份文件已到达源备份位置并进行了验证
    上传 集成运行时当前正在将备份文件上传到 Azure 存储
    已上传 备份文件已上传到 Azure 存储
    Restoring Azure 数据库迁移服务当前正在将备份文件还原到 Azure SQL 托管实例
    还原 备份文件已成功还原到 Azure SQL 托管实例
    已取消 迁移过程已取消
    忽略 已忽略备份文件,因为它不属于有效的数据库备份链

    backup restore details

完成迁移直接转换

本教程的最后一个步骤是完成迁移切换,以确保 Azure SQL 托管实例中已迁移的数据库可供使用。 此过程是唯一需要使连接到数据库的应用程序停机的步骤,因此,需要与业务或应用程序利益干系人一起认真规划切换持续时间。

若要完成直接转换:

  1. 停止传入源数据库的所有事务。
  2. 更改应用程序配置,使之指向 Azure SQL 托管实例中的目标数据库。
  3. 在指定的备份位置中,执行源数据库的最终结尾日志备份
  4. 使源数据库处于只读模式。 这样一来,用户可以从数据库读取数据,但不能修改数据库。
  5. 确保所有数据库备份在监视详细信息页中都显示为“还原”状态。
  6. 在监视详细信息页中选择“完成直接转换”。

在切换过程中,迁移状态将从“正在进行”更改为“正在完成” 。 完成切换过程后,迁移状态将更改为“成功”,表示数据库迁移成功,且迁移的数据库可供使用。

重要

交接后,具有业务关键服务层的 SQL 托管实例只能用比具有常规用途服务层的 SQL 托管实例更长的时间才能使用,因为必须为 Always On 高可用性组设定三个辅助副本的种子。 此操作持续时间取决于数据的大小,有关详细信息,请参阅管理操作持续时间

限制

使用 Azure Data Studio 的 Azure SQL 扩展迁移到 Azure SQL 托管实例具有以下限制:

  • 如果迁移单一数据库,数据库备份必须放置在数据库文件夹内的平面文件结构中(包括容器根文件夹),并且文件夹不能嵌套,因为不支持嵌套文件夹。
  • 如果使用同一个 Azure Blob 存储容器迁移多个数据库,则必须将不同数据库的备份文件置于容器内的单独文件夹中。
  • 不支持在目标 Azure SQL 托管实例中使用 DMS 覆盖现有数据库。
  • DMS 不支持在目标上配置高可用性和灾难恢复来匹配源拓扑。
  • 不支持下列服务器对象:
    • SQL Server 代理作业
    • 凭据
    • SSIS 包
    • 服务器审核
  • 不能使用从 Azure 数据工厂创建的现有自承载集成运行时通过 DMS 进行数据库迁移。 自承载集成运行时最初在 Azure Data Studio 中使用 Azure SQL 迁移扩展创建,可以重复用于更多数据库迁移。
  • 单个 LRS 作业(由 DMS 创建)最多可以运行 30 天。 当此期限到期时,作业将自动取消,因此目标数据库会自动删除。
  • 如果收到以下错误消息:Memory-optimized filegroup must be empty in order to be restored on General Purpose tier of SQL Database Managed Instance。 此问题是设计造成的,Azure SQL 托管实例常规用途层不支持 Hekaton(也称为 SQL Server 内存中 OLTP)。 若要继续迁移,一种方法是升级到支持 Hekaton 的业务关键层。 另一种方法是确保源数据库在 Azure SQL 托管实例为常规用途时不使用 Hekaton。

后续步骤