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

教程: 在 Azure Data Studio 中,将已启用 TDE 的数据库(预览版)迁移到 Azure SQL

为了保护 SQL Server 数据库,可以采取预防措施,例如设计安全系统、对机密资产加密和构建防火墙。 但是,物理盗窃驱动器或磁带等介质仍然可能会入侵数据。

TDE 提供了此问题的解决方案,使用证书保护的对称数据库加密密钥(DEK)对静态数据(数据和日志文件)进行实时 I/O 加密/解密。 有关手动迁移 TDE 证书的详细信息,请参阅 将 TDE 保护的数据库移到另一个 SQL Server

迁移 TDE 保护的数据库时,用于打开数据库加密密钥(DEK)的证书(非对称密钥)也必须随源数据库一起移动。 因此,需要在目标 SQL Server 的 master 数据库中重新创建服务器证书,以便该实例访问数据库文件。

可以使用 适用于 Azure Data Studio 的 Azure SQL 迁移扩展 以帮助将已启用 TDE 的数据库(预览版)从 SQL Server 的本地实例迁移到 Azure SQL。

已启用 TDE 的数据库迁移过程自动执行手动任务,例如,备份数据库证书密钥(DEK),将证书文件从本地 SQL Server 复制到 Azure SQL 目标,然后再次为目标数据库重新配置 TDE。

重要说明

目前,仅支持 Azure SQL 托管实例目标。 不支持加密备份。

在本教程中,你会了解如何将示例 AdventureWorksTDE 加密数据库从 SQL Server 的本地实例迁移到 Azure SQL 托管实例。

  • 在 Azure Data Studio 中打开“迁移到 Azure SQL”向导
  • 对源 SQL Server 数据库运行评估
  • 配置 TDE 证书迁移
  • 连接到 Azure SQL 目标
  • 启动 TDE 证书迁移并监视完成进度

Prerequisites

在开始学习本教程之前:

  • 下载并安装 Azure Data Studio

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

  • 以管理员身份运行 Azure Data Studio。

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

    • 目标托管实例(以及用于从 SMB 网络共享上传 TDE 证书文件备份的存储帐户)的参与者。
    • 包含目标托管实例或 Azure 存储帐户的 Azure 资源组的读者角色。
    • Azure 订阅的“所有者”或“参与者”角色(创建新的 DMS 服务时需要)。
    • 如果不使用上述内置角色,可以分配自定义角色。 有关详细信息,请参阅 自定义角色: 使用 ADS 将 SQL Server 联机迁移到 Azure SQL 托管实例
  • 创建 Azure SQL 托管实例的目标实例。

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

  • Azure Data Studio 在其中运行已启用 TDE 的数据库迁移的计算机应连接到源 SQL 服务器和目标 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. 在向导的第一页上,启动新会话或恢复以前保存的会话。

运行数据库评估

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

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

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

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

      屏幕截图显示如何选择 Azure SQL 托管实例目标。

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

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

    3. 在评估结果中,选择数据库,然后查看评估结果。 在此示例中,可以看到 AdventureWorksTDE 数据库受透明数据加密(TDE)保护。 评估建议在将源数据库迁移到托管实例目标之前迁移 TDE 证书。

      屏幕截图显示评估结果报告。

    4. 选择“选择”以打开 TDE 迁移配置面板。

配置 TDE 迁移设置

  1. 在“选定的加密数据库”节中,选择“将我的证书和私钥导出到目标”。

    屏幕截图显示 TDE 迁移配置。

    信息框”节介绍了导出 DEK 证书所需的权限。

    必须确保 SQL Server 服务帐户对用于备份 DEK 证书的网络共享路径具有写入访问权限。 此外,当前用户应在存在此网络路径的计算机上具有管理员权限。

  2. 输入 网络路径

    屏幕截图显示网络共享的 TDE 迁移配置。

    然后选中“我同意使用凭据访问证书”,执行此操作即代表你允许数据库迁移向导将 DEK 证书备份到网络共享。

  3. 如果不要迁移向导,则可帮助迁移已启用 TDE 的数据库。 选择“我不希望 Azure Data Studio 导出证书。”以跳过此步骤。

    屏幕截图显示如何拒绝 TDE 迁移。

    重要说明

    在继续迁移之前,必须先迁移证书,否则迁移会失败。 有关手动迁移 TDE 证书的详细信息,请参阅 将 TDE 保护的数据库移到另一个 SQL Server

  4. 如果要继续 TDE 认证迁移,请选择“应用”。

    屏幕截图显示如何应用 TDE 迁移配置。

    TDE 迁移配置面板将关闭,但可以随时选择 “编辑” 以修改网络共享配置。 选择“下一步”以继续迁移过程。

    屏幕截图显示如何编辑 TDE 迁移配置。

配置迁移设置

在“迁移到 Azure SQL”向导的“步骤 3: Azure SQL 目标”中,为目标托管实例完成以下步骤:

  1. 选择 Azure 帐户、Azure 订阅、Azure 区域或位置,以及包含托管实例的资源组。

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

  2. 准备就绪后,选择“迁移证书”以启动 TDE 证书迁移。

启动并监视 TDE 证书迁移

  1. 步骤 3:迁移状态中,“ 证书迁移 ”面板随即打开。 TDE 证书迁移进度详细信息会显示在屏幕上。

    屏幕截图显示如何启动 TDE 迁移过程。

  2. TDE 迁移完成(或失败)后,页面会显示相关更新。

    屏幕截图显示如何继续 TDE 迁移过程。

  3. 如果需要重试迁移,请选择“重试迁移”。

    屏幕截图显示如何重试 TDE 迁移。

  4. 准备就绪后,选择“完成”以继续迁移向导。

    屏幕截图显示如何完成 TDE 迁移。

  5. 可以选择“迁移证书”以监视每个 TDE 证书的过程。

  6. 选择“下一步”以继续迁移向导,直到完成数据库迁移。

    屏幕截图显示如何继续数据库迁移。

    有关将数据库联机或脱机迁移到 Azure SQL 托管实例目标的详细信息,请查看以下分步教程:

迁移后的步骤

目标托管实例现在应已迁移数据库及其各自的证书。 要验证最近迁移的数据库的当前状态,请在连接到托管实例目标时,将以下示例复制粘贴到 Azure Data Studio 的新查询窗口中。 然后,选择“运行”

USE master;
GO

SELECT db_name(database_id),
       key_algorithm,
       encryption_state_desc,
       encryption_scan_state_desc,
       percent_complete
FROM sys.dm_database_encryption_keys
WHERE database_id = DB_ID('Your database name');
GO

查询会返回有关数据库、加密状态和挂起完成百分比的信息。 在这种情况下,它为零,因为 TDE 证书已经完成。

屏幕截图显示本部分提供的 TDE 查询返回的结果。

有关使用 SQL Server 加密的详细信息,请参阅透明数据加密 (TDE)

限制

下表描述了已启用 TDE 的数据库迁移支持(由 Azure SQL 目标提供)的当前状态:

目标 支持 状态
Azure SQL 数据库
Azure SQL 托管实例 预览
Azure VM 上的 SQL Server