你当前正在访问 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 证书迁移并监视完成进度

先决条件

在开始学习本教程之前:

  • 下载并安装 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 Database
Azure SQL 托管实例 预览
Azure VM 上的 SQL Server