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

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

可以使用 Azure 数据库迁移服务和 Azure Data Studio 中的 Azure SQL 迁移扩展将数据库从 SQL Server 的本地实例脱机迁移到 Azure SQL 托管实例,此过程造成的停机时间很短。

对于需要进行一些手动配置的数据库迁移方法,请参阅将 SQL Server 实例迁移到 Azure SQL 托管实例

本教程介绍如何使用 Azure Data Studio 和数据库迁移服务,将 AdventureWorks 数据库从 SQL Server 的本地实例迁移到 Azure SQL 托管实例的实例。 本教程使用脱机迁移模式,该模式考虑到了在迁移过程中可接受的停机时间。

在本教程中,你将了解如何执行以下操作:

  • 在 Azure Data Studio 中打开“迁移到 Azure SQL”向导
  • 对源 SQL Server 数据库运行评估
  • 从源 SQL Server 实例收集性能数据
  • 获取最适合你的工作负载的 Azure SQL 托管实例 SKU 建议
  • 指定源 SQL Server 实例、备份位置和 Azure SQL 托管实例目标实例的详细信息
  • 创建 Azure 数据库迁移服务的实例
  • 开始迁移并监视完成进度

提示

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

本教程介绍如何从 SQL Server 脱机迁移到 Azure SQL 托管实例。 有关联机迁移,请参阅在 Azure Data Studio 中将 SQL Server 联机迁移到 Azure SQL 托管实例

先决条件

在开始学习本教程之前:

  • 下载并安装 Azure Data Studio

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

  • 具有一个已分配到以下内置角色之一的 Azure 帐户:

    • Azure SQL 托管实例目标实例的参与者角色,以及将服务器消息块 (SMB) 网络共享中的数据库备份文件上传到的存储帐户的参与者角色
    • 包含 Azure SQL 托管实例目标实例或 Azure 存储帐户的 Azure 资源组的读取者角色
    • Azure 订阅的所有者或参与者角色(如果要创建新的数据库迁移服务实例,则此角色是必需的)

    如果不使用这些内置角色之一,你可以分配自定义角色

    重要

    仅当配置迁移步骤时才需要 Azure 帐户。 进行评估或者在 Azure Data Studio 的迁移向导中查看 Azure 建议时不需要 Azure 帐户。

  • 创建 Azure SQL 托管实例的目标实例。

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

  • 提供一个 SMB 网络共享、Azure 存储帐户文件共享或 Azure 存储帐户 Blob 容器,其中包含完整数据库备份文件和后续事务日志备份文件。 数据库迁移服务在数据库迁移期间使用备份位置。

    重要

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

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

    提示

    如果数据库包含受 Always Encrypted 保护的敏感数据,迁移过程会自动将 Always Encrypted 密钥迁移到目标托管实例。

  • 如果数据库备份在网络文件共享中,请提供一台可在其上安装自承载集成运行时的计算机,以访问和迁移数据库备份。 迁移向导提供下载链接和身份验证密钥,用于下载和安装自承载集成运行时。

    在为迁移做准备时,请确保安装自承载集成运行时的计算机启用了以下出站防火墙规则和域名:

    域名 出站端口 说明
    公有云:{datafactory}.{region}.datafactory.azure.net
    *.frontend.clouddatahub.net

    Azure 政府版:{datafactory}.{region}.datafactory.azure.us

    由世纪互联运营的 Microsoft Azure:{datafactory}.{region}.datafactory.azure.cn
    443 自承载集成运行时连接到数据库迁移服务时需要此域。

    对于在公有云中新建的数据工厂,可以在自承载集成运行时密钥中找到完全限定的域名 (FQDN),其格式为 {datafactory}.{region}.datafactory.azure.net

    对于现有数据工厂,如果在自承载集成密钥中未看到 FQDN,请改用 *.frontend.clouddatahub.net
    download.microsoft.com 443 自承载集成运行时下载更新时需要此端口。 如果已禁用自动更新,则可以跳过对此域的配置。
    *.core.windows.net 443 由连接到 Azure 存储帐户的自承载集成运行时用于从网络共享上传数据库备份

    提示

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

  • 如果使用自承载集成运行时,请确保安装了运行时的计算机可以连接到源 SQL Server 实例和备份文件所在的网络文件共享。

  • 启用出站端口 445 以允许访问网络文件共享。 有关详细信息,请参阅有关使用自承载集成运行时的建议

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

在 Azure Data Studio 中打开“迁移到 Azure SQL”向导

若要打开“迁移到 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. 在“迁移到 Azure SQL”向导的“步骤 1: 要评估的数据库”中,选择要评估的数据库。 然后,选择“下一步”。

  2. 在“步骤 2: 评估结果和建议”中完成以下步骤:

    1. 在“选择 Azure SQL 目标”中,选择“Azure SQL 托管实例”。

    Assessment confirmation

  3. 选择“查看/选择”以查看评估结果。

  4. 在评估结果中选择数据库,然后查看评估报告,确保没有任何问题。

    1. 选择“获取 Azure 建议”打开建议窗格。

    2. 选择“立即收集性能数据”。 在本地计算机上选择一个文件夹用于存储性能日志,然后选择“开始”。

      Azure Data Studio 将收集性能数据,直到你停止收集数据或关闭 Azure Data Studio。

      10 分钟后,Azure Data Studio 将指示有适用于Azure SQL 托管实例的建议。 生成第一个建议后,可以选择“重新开始收集数据”以继续收集数据并细化 SKU 建议。 如果你的使用模式会随时变化,则扩展的评估特别有用。

    3. 在选定的“Azure SQL 托管实例”目标中,选择“查看详细信息”打开详细的 SKU 建议报告:

    4. 在“查看 Azure SQL 托管实例建议”中查看建议。 若要保存建议的副本,请选中“保存建议报告”复选框。

  5. 选择“关闭”以关闭建议窗格。

  6. 选择“下一步”继续在向导中迁移数据库。

配置迁移设置

  1. 在“迁移到 Azure SQL”向导的“步骤 3: Azure SQL 目标”中,选择你的 Azure 帐户、Azure 订阅、Azure 区域或位置,以及包含 Azure SQL 托管实例目标实例的资源组。 然后,选择“下一步”。

  2. 在“步骤 4: 迁移模式”中选择“脱机迁移”,然后选择“下一步”。

    注意

    在脱机迁移模式下,当在 Azure SQL 托管实例的目标实例上还原数据库备份时,不应将源 SQL Server 数据库用于写入活动。 需要考虑到在迁移完成之前的应用程序停机时间。

  3. 在“步骤 5: 数据源配置”中,选择你的数据库备份的位置。 数据库备份可能位于本地网络共享中,也可能位于 Azure 存储 Blob 容器中。

  • 对于位于网络共享中的备份,请输入或选择以下信息:

    名称 说明
    源凭据 - 用户名 用于连接到源 SQL Server 实例和验证备份文件的凭据(Windows 和 SQL身份验证)。
    源凭据 - 密码 用于连接到源 SQL Server 实例和验证备份文件的凭据(Windows 和 SQL身份验证)。
    包含备份的网络共享位置 包含完整备份文件和事务日志备份文件的网络共享位置。 在迁移过程中,将自动忽略网络共享中不属于有效备份集的所有无效文件或备份文件。
    拥有网络共享位置读取权限的 Windows 用户帐户 拥有网络共享读取权限以检索备份文件的 Windows 凭据(用户名)。
    密码 拥有网络共享读取权限以检索备份文件的 Windows 凭据(密码)。
    目标数据库名称 可以在迁移过程中修改目标数据库名称。
    存储帐户详细信息 备份文件上传到的资源组和存储帐户。 无需创建容器。 在上传过程中,数据库迁移服务会自动在指定的存储帐户中创建 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 SQL”向导的“步骤 6: Azure 数据库迁移服务”中,创建 Azure 数据库迁移服务的新实例或重用以前创建的现有实例。

注意

如果以前你使用 Azure 门户创建了数据库迁移服务实例,则无法在 Azure Data Studio 的迁移向导中重用该实例。 仅当实例是使用 Azure Data Studio 创建的时,才能重用该实例。

使用数据库迁移服务的现有实例

若要使用数据库迁移服务的现有实例,请执行以下操作:

  1. 在“资源组”中,选择包含现有数据库迁移服务实例的资源组。

  2. 在“Azure 数据库迁移服务”中,选择位于选定资源组中的现有数据库迁移服务实例。

  3. 选择“下一步”。

创建数据库迁移服务的新实例

若要创建数据库迁移服务的新实例,请执行以下操作:

  1. 在“资源组”中,创建一个新资源组以包含数据库迁移服务的新实例。

  2. 在“Azure 数据库迁移服务”下选择“新建”。

  3. 在“创建 Azure 数据库迁移服务”中,输入数据库迁移服务实例的名称,然后选择“创建”。

  4. 在“设置集成运行时”下完成以下步骤:

    1. 选择“下载并安装集成运行时”链接,在 Web 浏览器中打开下载链接。 下载集成运行时,然后将其安装在满足连接到源 SQL Server 实例的先决条件的计算机上。

      安装完成后,Microsoft Integration Runtime Configuration Manager 会自动打开以开始注册过程。

    2. 在“身份验证密钥”表中,复制向导中提供的一个身份验证密钥并将其粘贴到 Azure Data Studio 中。 如果该身份验证密钥有效,则 Integration Runtime Configuration Manager 中会显示一个绿色勾选图标。 绿色勾选标记指示可以继续注册。

      注册自承载集成运行时后,关闭 Microsoft Integration Runtime Configuration Manager。

      注意

      有关如何使用自承载集成运行时的详细信息,请参阅创建和配置自承载集成运行时

  5. 在 Azure Data Studio 的“创建 Azure 数据库迁移服务”中,选择“测试连接”以验证新建的数据库迁移服务实例是否已连接到新注册的自承载集成运行时。

    Test connection integration runtime

  6. 返回 Azure Data Studio 中的迁移向导。

开始数据库迁移

在“迁移到 Azure SQL”向导的“步骤 7: 摘要”中查看创建的配置,然后选择“开始迁移”以开始数据库迁移。

监视数据库迁移

  1. 在 Azure Data Studio 的服务器菜单中的“常规”下,选择“Azure SQL 迁移”转到 Azure SQL 迁移仪表板。

    在“数据库迁移状态”下,可以跟踪正在进行、已完成和失败(如果有)的迁移,或者查看所有数据库迁移。

    monitor migration dashboard

  2. 选择“正在进行的数据库迁移”以查看处于活动状态的迁移。

    若要获取有关特定迁移的详细信息,请选择数据库名称。

    迁移详细信息窗格显示了备份文件及其相应状态:

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

在 Azure SQL 托管实例的实例上还原所有数据库备份后,数据库迁移服务将启动自动迁移切换,以确保迁移后的数据库可供使用。 迁移状态从“正在进行”更改为“成功”。

重要

迁移后,使用“业务关键”服务层级的 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。

后续步骤