共用方式為


從舊版適用於 Microsoft Azure Key Vault 的 SQL Server 連接器還原備份時,發生錯誤 33111

原始 KB 編號: 4470999

本文討論當您嘗試還原使用舊版 SQL Server Connector Microsoft Azure 金鑰保存庫 之伺服器上所建立 透明資料加密 (TDE) 備份時所發生的錯誤。

徵兆

當您嘗試從使用 SQL Server Connector for 金鑰保存庫 1.0.4.0 或舊版的 SQL Server 還原資料庫備份,以 適用於 Microsoft Azure Key Vault 的 SQL Server 連接器 1.0.5.0 時發生問題。

假設您部署下列 sql Server 實例Microsoft:

  • SQL Server 實例sql1已部署適用於 金鑰保存庫 1.0.4.0 的 SQL Server 連接器。

  • SQL Server 實例sql2已部署適用於 金鑰保存庫 1.0.5.0 的 SQL Server 連接器。

  • 使用下列查詢,在 金鑰保存庫 中,從相同非對稱密鑰來源的 和 sql2 實例上sql1部署非對稱密鑰:

    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

實例 sql2 已建立非對稱密鑰。

如果您嘗試在 實體上 sql2 還原備份,作業會失敗,並傳回類似下列訊息的錯誤訊息:

Msg 33111、Level 16、State 4、Line 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

原因

SQL Server Connector 1.0.5.0 版引進了更新,金鑰保存庫 會變更程式計算指紋的方式。 在 1.0.5.0 版中,此計算符合程式引擎用來支援下列移轉案例的邏輯:

來源:使用可延伸金鑰管理的內部部署Microsoft SQL Server (EKM)

若要:Microsoft Azure SQL 資料庫 使用攜帶您自己的金鑰 (BYOK) 支援 透明資料加密 (TDE)

由於這項變更,當您嘗試從 1.0.4.0 版或舊版還原資料庫備份時,可能會遇到問題。

解決方法

  1. 將 sql Server Connector for 金鑰保存庫 1.0.4.0 或舊版複製到sql2實例伺服器。

  2. sql2 伺服器上執行下列查詢,將 變更 CRYPTOGRAPHIC PROVIDER 為 1.0.4.0 版:

    ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider
    FROM FILE =
    'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.4.0\Microsoft.AzureKeyVaultService.EKM.dll'
    
    1. 重新啟動 SQL Server。

    2. 使用 CRYPTOGRAPHIC PROVIDER 1.0.4.0 建立新的非對稱密鑰。

        CREATE ASYMMETRIC KEY TDE_KEY_1040 
        FROM PROVIDER AzureKeyVaultProvider 
        WITH PROVIDER_KEY_NAME = 'key1', 
        CREATION_DISPOSITION = OPEN_EXISTING
      
  3. 您可以使用下列查詢來確認這兩個非對稱金鑰是否存在:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. 使用類似下列查詢的查詢,將認證新增至非對稱密鑰對應登入(下列範例中的TDE_Login):

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. 您現在應該能夠還原備份。

  6. 在上 sql2 執行下列查詢, CRYPTOGRAPHIC PROVIDER 將 還原為 1.0.5.0 版:

    ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider 
    FROM FILE =
    'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.5.0\Microsoft.AzureKeyVaultService.EKM.dll'
    
  7. 重新啟動 SQL Server。

  8. 若要使用新的指紋,請使用與非對稱密鑰相同的非對稱密鑰或新版本非對稱密鑰來執行下列查詢。

    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER ASYMMETRIC KEY <KeyName_1.0.5.0_version>