教程:将 SQL Server 迁移到 Azure SQL 数据库(脱机)

可以使用 Azure 数据库迁移服务通过 Azure Data Studio 的 Azure SQL 迁移扩展或 Microsoft Azure 门户将数据库从 SQL Server 的本地实例迁移到 Azure SQL 数据库(脱机)。

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

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

  • 在 Azure Data Studio 中打开“迁移到 Azure SQL”向导
  • 对源 SQL Server 数据库运行评估
  • 从源 SQL Server 实例收集性能数据
  • 获取最适合你的工作负载的 Azure SQL 数据库 SKU 建议
  • 创建 Azure 数据库迁移服务的实例
  • 开始迁移并监视完成进度

提示

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

重要

目前无法对 Azure SQL 数据库目标进行联机迁移。

迁移选项

以下部分介绍如何通过 Azure SQL 迁移扩展或在 Microsoft Azure 门户中使用 Azure 数据库迁移服务。

先决条件

在开始学习本教程之前:

  • 下载并安装 Azure Data Studio

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

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

    • Azure SQL 数据库目标实例的参与者
    • 包含 Azure SQL 数据库目标实例的 Azure 资源组的读取者角色
    • Azure 订阅的所有者或参与者角色(如果要创建 Azure 数据库迁移服务的新实例,则此角色是必需的)

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

    重要

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

  • 创建 Azure SQL 数据库的目标实例。

  • 确保连接到源 SQL Server 实例的 SQL Server 登录名是 db_datareader 角色的成员,并且目标 SQL Server 实例的登录名是 db_owner 角色的成员。

  • 若要使用数据库迁移服务将数据库架构从源迁移到目标 Azure SQL DB,所需的受支持的最低 SHIR 版本 为 5.37 或以上。

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

注意

现在,你可以使用数据库迁移服务迁移数据库架构和数据。 此外,你还可以使用 Azure Data Studio 中的 SQL Server dacpac 扩展SQL 数据库项目扩展之类的工具来迁移架构,然后再选择要迁移的表列表。

如果 Azure SQL 数据库目标上不存在表,或者在开始迁移之前未选择任何表,则无法选择“下一步”按钮来启动迁移任务。 如果目标上不存在表,则必须选择“架构迁移”选项才能继续。

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

若要打开“迁移到 Azure SQL”向导,请执行以下操作:

  1. 在 Azure Data Studio 中,转到“连接”。 选择并连接到 SQL Server 的本地实例。 还可以连接到 Azure 虚拟机上的 SQL Server。

  2. 右键单击服务器连接并选择“管理”。

    显示 Azure Data Studio 中的服务器连接和“管理”选项的屏幕截图。

  3. 在服务器菜单中的“常规”下,选择“ Azure SQL 迁移”。

    显示 Azure Data Studio 服务器菜单的屏幕截图。

  4. 在“Azure SQL 迁移”仪表板中,选择“迁移到 Azure SQL”打开迁移向导。

    显示“迁移到 Azure SQL”向导的屏幕截图。

  5. 在向导的第一页上,启动新会话或恢复以前保存的会话。

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

  1. 在“迁移到 Azure SQL”向导的“步骤 1: 要评估的数据库”中,选择要评估的数据库。 然后,选择“下一步”。

    显示选择要评估的数据库的屏幕截图。

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

    1. 在“选择 Azure SQL 目标”中,选择“Azure SQL 数据库”。

      显示选择 Azure SQL 数据库目标的屏幕截图。

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

      显示查看/选择评估结果的屏幕截图。

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

      显示评估报表的屏幕截图。

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

      显示 Azure 建议的屏幕截图。

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

      显示性能数据收集的屏幕截图。

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

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

      显示收集的性能数据的屏幕截图。

    6. 在选定的“Azure SQL 数据库”目标中,选择“查看详细信息”打开详细的 SKU 建议报告:

      显示目标数据库建议的“查看详细信息”链接的屏幕截图。

    7. 在“查看 Azure SQL 数据库建议”中查看建议。 若要保存建议的副本,请选择“保存建议报告”。

      显示 SKU 建议详细信息的屏幕截图。

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

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

配置迁移设置

  1. 在“迁移到 Azure SQL”向导的“步骤 3: Azure SQL 目标”中,针对目标 Azure SQL 数据库实例完成以下步骤:

    1. 选择你的 Azure 帐户、Azure 订阅、Azure 区域或位置,以及包含 Azure SQL 数据库部署的资源组。

      显示 Azure 帐户详细信息的屏幕截图。

    2. 对于“Azure SQL 数据库服务器”,请选择目标 Azure SQL 数据库服务器(逻辑服务器)。 输入目标数据库部署的用户名和密码。 然后,选择“连接”。 输入凭据以验证与目标数据库的连接。

      显示 Azure SQL 数据库详细信息的屏幕截图。

    3. 接下来,映射源数据库和目标数据库以进行迁移。 对于“目标数据库”,请选择 Azure SQL 数据库目标。 然后选择“下一步”转到迁移向导中的下一步。

      显示源和目标映射的屏幕截图。

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

    显示选择脱机迁移的屏幕截图。

  3. 在“步骤 5: 数据源配置”中完成以下步骤:

    1. 在“源凭据”下,输入源 SQL Server 凭据。

    2. 在“选择表”下,选择“编辑”铅笔图标。

      显示源 SQL Server 凭据的屏幕截图。

    3. 在“为 <数据库名称> 选择表”中,选择要迁移到目标的表。 “包含行”列指示目标表是否包含目标数据库中的行。 可以选择一个或多个表。 然后选择“更新”。

      在开始迁移之前,随时可以更新所选表的列表。

      在以下示例中,将应用文本筛选器以选择包含单词 Employee 的表。 根据迁移需求选择表的列表。

      显示选择表的屏幕截图。

  4. 查看选择的表,然后选择“下一步”转到迁移向导中的下一步。

    显示已选择进行迁移的表的屏幕截图。

注意

如果未选择任何表或未输入用户名和密码,则无法选择“下一步”按钮。

现在,你可以使用数据库迁移服务迁移数据库架构和数据。 此外,你还可以使用 Azure Data Studio 中的 SQL Server dacpac 扩展SQL 数据库项目扩展之类的工具来迁移架构,然后再选择要迁移的表列表。

创建数据库迁移服务实例

在“迁移到 Azure SQL”向导的“步骤 6: 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 数据库迁移服务”中,选择“测试连接”以验证新建的数据库迁移服务实例是否已连接到新注册的自承载集成运行时。

    显示 IR 连接测试的屏幕截图。

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

开始数据库迁移

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

显示如何开始迁移的屏幕截图。

监视数据库迁移

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

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

    显示监视迁移仪表板的屏幕截图。

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

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

    显示数据库迁移详细信息的屏幕截图。

    每当迁移状态刷新时,数据库迁移服务就会返回最新的已知迁移状态。 下表描述了可能的状态:

    状态 说明
    准备复制 服务正在禁用目标表中的自动统计信息、触发器和索引。
    复制 正在将数据从源数据库复制到目标数据库。
    复制完成 数据复制已完成。 服务正在等待其他表完成复制,以开始执行将表恢复其原始架构的最终步骤。
    重新生成索引 服务正在重新生成目标表上的索引。
    成功 已复制所有数据,并已重新生成索引。
  3. 请检查迁移详细信息页以查看每个数据库的当前状态。

    下面是状态为“正在创建”的 AdventureWorks2022 数据库迁移的示例:

    显示“正在创建”迁移状态的屏幕截图。

  4. 在菜单栏中,选择“刷新”以更新迁移状态。

    刷新迁移状态后,示例 AdventureWorks2022 数据库迁移的更新状态为“正在进行”:

    显示“正在进行”迁移状态的屏幕截图。

  5. 选择数据库名称以打开表视图。 在此视图中,可以看到当前迁移状态、当前处于该状态的表数量,以及每个表的详细状态。

    显示监视表迁移的屏幕截图。

    将所有表数据迁移到 Azure SQL 数据库目标后,数据库迁移服务会将迁移状态从“正在进行”更新为“成功”。

    显示迁移成功的屏幕截图。

注意

数据库迁移服务通过跳过没有数据(0 行)的表来优化迁移。 没有数据的表不会出现在列表中,即使在创建迁移时选择了这些表。

到 Azure SQL 数据库的迁移现已完成。 我们建议你完成一系列迁移后任务,以确保能够顺畅高效地运行每项功能。

重要

请确保利用 Azure SQL 数据库的基于云的高级功能。 这些功能包括内置高可用性威胁检测以及监视和优化工作负载

限制

Azure SQL 数据库脱机迁移利用 Azure 数据工厂 (ADF) 管道进行数据移动,因此遵守 ADF 限制。 如果同时创建数据库迁移服务,则会创建相应的 ADF。 因此,工厂限制适用于每个服务。

  • 安装 SHIR 的计算机充当迁移的计算。 确保此计算机可以处理数据复制的 CPU 和内存负载。 要了解详细信息,请参阅创建和配置自承载集成运行时
  • 每个数据库限制为 100,000 个表。
  • 每个服务限制为 10,000 个并发数据库迁移。
  • 迁移速度在很大程度上取决于目标 Azure SQL 数据库 SKU 和自承载集成运行时主机。
  • 由于启动活动时的 ADF 开销,Azure SQL 数据库迁移对表编号的可伸缩性很差。 如果数据库包含数千个表,每个表的启动过程都可能需要几秒钟时间,即使这些表仅包含 1 位数据的一行。
  • 目前不支持对具有双字节字符的 Azure SQL 数据库表名进行迁移。 缓解措施是在迁移前重命名表;成功迁移后,可以将其更改回原始名称。
  • 由于超时,具有大型 Blob 列的表可能无法迁移。
  • 目前不支持保留了 SQL Server 的数据库名称。
  • 目前不支持包含分号的数据库名称。
  • 不会迁移计算列。