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

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

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

提示

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

重要

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

先决条件

在开始学习本教程之前:

  • 确保可以访问 Azure 门户

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

    • Azure SQL 数据库目标实例的参与者
    • 包含 Azure SQL 数据库目标实例的 Azure 资源组的读取者角色
    • 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 数据库目标上不存在表,或者在开始迁移之前未选择任何表。 未提供“下一步”按钮,无法选择以启动迁移任务。 如果目标上不存在表,则必须选择“架构迁移”选项才能继续。

创建数据库迁移服务实例

步骤 1:Azure 门户中,导航到“Azure 数据库迁移服务”页。 创建 Azure 数据库迁移服务的新实例,或重复使用之前创建的现有实例。

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

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

  • 在 Microsoft Azure 门户中的“Azure 数据库迁移服务”下,选择要使用的数据库迁移服务的现有实例,确保它存在于正确的资源组和区域中。

    Screenshot that shows Database Migration Service overview.

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

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

  1. 在 Microsoft Azure 门户中的“Azure 数据库迁移服务”下,选择“创建”。

    Screenshot that shows Database Migration Service create option.

  2. 在“选择迁移方案和数据库迁移服务”中,选择所需的输入(如源服务器和目标服务器类型),选择“数据库迁移服务”,然后选择“选择”。

    Screenshot that shows Database Migration Service Migration scenarios.

  3. 在下一个屏幕“创建数据迁移服务”上,选择订阅和资源组,然后选择“位置”,输入数据库迁移服务名称。 选择“查看 + 创建” 。 这会创建 Azure 数据库迁移服务。

    Screenshot that shows Database Migration Service required input details.

  4. 如果需要自承载集成运行时 (SHIR),请在数据库迁移服务的概述页上,在“设置”下选择“集成运行时”,然后完成以下步骤:

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

      Screenshot that shows the Download and install integration runtime link.

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

    2. 在“身份验证密钥”表中,复制向导中提供的身份验证密钥之一,并将其粘贴到 Microsoft Integration Runtime Configuration Manager 中。

      Screenshot that highlights the authentication key table in the wizard.

      如果该身份验证密钥有效,则 Integration Runtime Configuration Manager 中会显示一个绿色勾选图标。 绿色勾选标记指示可以继续注册。

      注册自承载集成运行时后,关闭 Microsoft Integration Runtime Configuration Manager。 在“设置”>“集成运行时”下,可能需要几分钟时间才能在 Microsoft Azure 门户上反映数据库迁移服务的节点详细信息。

      Screenshot that highlights SHIR status on Azure portal.

      注意

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

启动新迁移

  1. 步骤 2“使用 Microsoft Azure 门户中的数据库迁移服务启动新迁移”中,在“Azure 数据库迁移服务”下,选择要使用的数据库迁移服务的现有实例,然后选择“新迁移”或“开始迁移”。

  2. 在“选择新迁移”方案下,选择源、目标服务器类型、迁移模式,然后选择“选择”。

    Screenshot that shows new migration scenario details.

  3. 现在,在 Azure SQL 数据库脱机迁移向导下:

    1. 提供以下详细信息以连接到源 SQL Server,然后选择“下一步”:

      • 源服务器名称
      • 身份验证类型
      • 用户名和密码
      • 连接属性

      Screenshot that shows source SQL server details.

    2. 在下一页上,选择要迁移的数据库。 此页面可能需要一些时间才能从源填充数据库列表。

      Screenshot that shows list of databases from source.

    3. 假设你已根据评估结果预配了目标,请在“连接到目标 Azure SQL 数据库”页上提供目标详细信息,然后选择“下一步”:

      • Azure 订阅
      • Azure 资源组
      • 目标 Azure SQL 数据库服务器
      • 身份验证类型
      • 用户名和密码

      Screenshot that shows details for target.

    4. 在“映射源和目标数据库”下,在源和目标之间映射数据库。

      Screenshot that shows list of mapping between source and target.

    5. 在执行此步骤之前,请确保将所有选定数据库的架构从源迁移到目标。 然后,为每个所选数据库选择要迁移的数据库表,然后选择要为其迁移数据的表。

      Screenshot that shows list of tables select source database to migrate data to target.

    6. 查看“数据库迁移摘要”上提供的所有输入,然后选择“开始迁移”按钮以启动数据库迁移。

      Screenshot that shows summary of the migration configuration.

      注意

      使用脱机迁移时,应用程序停机时间从迁移开始时算起。

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

监视数据库迁移

  1. 在数据库迁移服务实例概述中,选择“监视迁移”即可查看数据库迁移的详细信息。

    Screenshot that shows monitor migration dashboard.

  2. 在“迁移”选项卡下,可以跟踪正在进行、已完成和失败的迁移(如果有),也可以查看所有数据库迁移。 在菜单栏中,选择“刷新”以更新迁移状态。

    Screenshot that shows database migration details.

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

    状态 说明
    准备复制 服务正在禁用目标表中的自动统计信息、触发器和索引。
    复制 正在将数据从源数据库复制到目标数据库。
    复制完成 数据复制已完成。 服务正在等待其他表完成复制,以开始执行将表恢复其原始架构的最终步骤。
    重新生成索引 服务正在重新生成目标表上的索引。
    已成功 已复制所有数据,并已重新生成索引。
  3. 在“源名称”下,选择数据库名称以打开表视图。 在此视图中,可以看到当前迁移状态、当前处于该状态的表数量,以及每个表的详细状态。

    Screenshot that shows a migration status.

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

    Screenshot that shows succeeded migration.

注意

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

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

限制

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

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

后续步骤