修复: 问题可能发生在数据库备份旧版本的 SQL Server 连接器 Microsoft Azure 密钥存储库版本 1.0.5.0

症状

当您尝试将数据库备份 SQL Server 连接器从迁移为 Microsoft Azure 密钥存储库时遇到问题 1.0.4.0 或到 Microsoft Azure 密钥存储库连接器,SQL Server 早期版本 1.0.5.0。

原因

在 Microsoft Azure 密钥存储库更改的版本的 SQL Server 连接器 1.0.5.0 引入了更新程序计算指纹的方法。在版本1.0.5.0,此计算匹配程序引擎用于支持以下迁移方案的逻辑:

从:内部部署 Microsoft SQL Server 使用可扩展密钥管理 (EKM)

为:使用透明数据加密 (TDE)的支持将您自己键 (BYOK)的 Microsoft Azure SQL 数据库

由于此更改,您可能会遇到问题,当您尝试还原数据库备份版本 1.0.4.0 或更早的版本。

解决方案

对于 Microsoft Azure 密钥存储库复制 SQL Server 连接器 1.0.4.0 或 sql2 实例的服务器的早期版本。

  1. 若要更改加密提供程序版本 1.0.4.0 到 sql2 服务器上运行下面的查询。

    更改加密提供程序 AzureKeyVaultProvider

    从文件 =

    FilePath\FileName\SQL 服务器连接器用于 Microsoft Azure 关键 Vault\1.0.4.0\Microsoft.AzureKeyVaultService.EKM.dll

  2. 通过使用 1.0.4.0 创建一个新的非对称密钥提供程序。

    创建非对称密钥 TDE_KEY_1040

    从提供程序 AzureKeyVaultProvider

    PROVIDER_KEY_NAME = key1

    CREATION_DISPOSITION = OPEN_EXISTING

    您现在应能够还原备份。

  3. 若要恢复到版本 1.0.5.0 加密提供程序的 sql2 上运行下面的查询。

    更改加密提供程序 AzureKeyVaultProvider

    从文件 =

    FilePath\FileName\SQL 服务器连接器用于 Microsoft Azure 关键 Vault\1.0.5.0\Microsoft.AzureKeyVaultService.EKM.dll

  4. 若要能够使用新的指纹,运行下面的查询使用相同的非对称密钥或新版本的非对称密钥。

    更改数据库的加密密钥

    由服务器不对称密钥 KeyName1050Version 加密

更多信息

假定您部署 Microsoft SQL Server 的以下实例:

  • SQL Server 实例 sql1 有 Azure 存储库 1.0.4.0 部署 microsoft SQL Server 连接器。

  • SQL Server 实例 sql2 有 Azure 存储库 1.0.5.0 部署 microsoft SQL Server 连接器。

以下查询用于创建的 sql1 和 sql2 的实例,以将部署从 Azure 密钥存储库中相同的非对称密钥的非对称密钥。

CREATE ASYMMETRIC KEY TDE_KEY

FROM PROVIDER AzureKeyVaultProvider

WITH PROVIDER_KEY_NAME = 'key1',

CREATION_DISPOSITION = OPEN_EXISTING

请注意,指纹长度不同。版本 1.0.5.0 指纹比版本 1.0.4.0 指纹。

1.0.4.0 示例指纹:

- 0x2C5677D76F76D77F80

版本 1.0.5.0 指纹的示例:

- 0x373B314B78E8D59A0925494558FEF14B726216C5

注意 这两个非对称密钥是从相同的源。

更改会导致备份期间发生和还原操作的问题。

示例:

  • 您必须通过 sql1 在 Azure 密钥存储库中的非对称密钥进行加密的数据库备份。

  • Sql2 实例已创建非对称密钥。

如果您尝试还原的 sql2 实例的备份,还原将失败,并返回类似于以下内容的错误消息:

消息 33111,第 16 级状态 4,行LineNumber

找不到服务器采用指纹"0x2C5677D76F76D77F80"的非对称密钥。

查询检索的每个键的指纹是,如下所示:

select thumbprint,* from master.sys.asymmetric_keys

查询以检索每个 TDE 数据库的指纹是,如下所示:

select DatabaseName(ddek.database_id) as DatabaseName,ak.name as[Asymmetric key Name], ak.thumbprint From sys.dm_database_encryption_keys ddek inner join master.sys.asymmetric_keys ak on ak.thumbprint=ddek.encryptor_thumbprint

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×