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 與更早版本的 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
指定 RESTORE 程式應該繼續,即使目前的資料庫主要金鑰未開啟,或SQL Server無法解密其中一些已加密的私密金鑰。

備註

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

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

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

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

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

  1. 擁有 Azure 儲存體帳戶

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

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

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

權限

需要資料庫的 CONTROL 權限。

範例

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

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

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

USE AdventureWorks2012;  
RESTORE MASTER KEY   
    FROM URL = 'https://mydocsteststorage.blob.core.windows.net/mytestcontainer/AdventureWorks2012_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