RESTORE MASTER KEY (Transact-SQL)

適用於:SQL Server

從備份檔案匯入資料庫主要金鑰。

重要

SQL Server 2022 (16.x) 導入了將資料庫主要金鑰備份到 Azure Blob 儲存體及從中還原的支援。 URL 語法僅適用於 SQL Server 2022 (16.x) 和更新版本。

Transact-SQL 語法慣例

Syntax

RESTORE MASTER KEY FROM 
  {
    FILE = 'path_to_file'
  | URL = 'Azure Blob storage URL'
  }  
    DECRYPTION BY PASSWORD = 'password'  
    ENCRYPTION BY PASSWORD = 'password'  
    [ FORCE ]  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

FILE ='path_to_file'
指定預存資料庫主要金鑰的完整路徑,包括檔案名稱。 path_to_file 可以是本機路徑或通往網路位置的 UNC 路徑。

URL ='Azure Blob 儲存體 URL'
適用於:SQL Server 2022 (16.x) 和更新版本
這是 Azure Blob 儲存體的 URL,其格式類似 https://<storage_account_name>.blob.core.windows.net/<storage_container_name>/<backup_file_name>.bak

DECRYPTION BY PASSWORD ='password'
指定解密要從檔案匯入之資料庫主要金鑰時所需的密碼。

ENCRYPTION BY PASSWORD ='password'
指定資料庫主要金鑰已載入資料庫中之後用來加密該金鑰的密碼。

FORCE
即使目前資料庫主要金鑰未開啟,或 SQL Server 無法解密某些以此金鑰加密的私密金鑰時,指定 RESTORE 處理序仍應繼續執行。

備註

當主要金鑰還原時,SQL Server 會解密所有利用目前作用中主要金鑰加密的金鑰,然後利用還原的主要金鑰加密這些金鑰。 這項需要大量資源的作業應該安排在低需求時進行。 如果目前資料庫主要金鑰未開啟或無法開啟,或者,如果利用該金鑰加密的任何金鑰無法解密,還原作業便會失敗。

請只在主要金鑰無法擷取或解密失敗時才使用 FORCE 選項。 只由無法擷取的金鑰加密的資訊會遺失。

如果先前是由服務主要金鑰加密主要金鑰,則還原的主要金鑰也會由服務主要金鑰來加密。

如果目前資料庫中沒有主要金鑰,RESTORE MASTER KEY 就會建立主要金鑰。 不會自動利用服務主要金鑰來加密新的主要金鑰。

如果您使用 SQL Server 2022 (16.x) 和更新版本,並且想要從 Azure Blob 儲存體還原資料庫主要金鑰,則適用下列必要條件:

  1. 擁有 Azure 儲存體帳戶

  2. 建立預存存取原則和共用存取儲存體

  3. 使用共用存取簽章建立 SQL Server 認證

    如需詳細資訊,請參閱教學課程:使用 Azure Blob 儲存體搭配 SQL Server

權限

需要資料庫的 CONTROL 權限。

範例

下列範例會從檔案還原 AdventureWorks2022 資料庫的資料庫主要金鑰。

USE AdventureWorks2022;  
RESTORE MASTER KEY   
    FROM FILE = 'c:\backups\keys\AdventureWorks2022_master_key'   
    DECRYPTION BY PASSWORD = '3dH85Hhk003#GHkf02597gheij04'   
    ENCRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD';  
GO  

下列範例會從 Azure Blob 儲存體還原 AdventureWorks2022 資料庫的資料庫主要金鑰。

USE AdventureWorks2022;  
RESTORE MASTER KEY   
    FROM URL = 'https://mydocsteststorage.blob.core.windows.net/mytestcontainer/AdventureWorks2022_master_key.bak'   
    DECRYPTION BY PASSWORD = '3dH85Hhk003#GHkf02597gheij04'   
    ENCRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD';  
GO  

另請參閱

CREATE MASTER KEY (Transact-SQL)
ALTER MASTER KEY (Transact-SQL)
加密階層
RESTORE SYMMETRIC KEY