CREATE MASTER KEY (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本) 是Azure SQL Database 是Azure SQL 受控執行個體 是Azure Synapse Analytics 是平行處理資料倉儲

在 master 資料庫中建立資料庫主要金鑰。

主題連結圖示 Transact-SQL 語法慣例

語法

CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

PASSWORD ='password' 是用來加密資料庫中主要金鑰的密碼。 password 必須符合執行 SQL Server 執行個體之電腦的 Windows 密碼原則需求。 在 SQL Database 和 Azure Synapse Analytics 中,password 為選擇性。

備註

資料庫主要金鑰是一個用來保護憑證私密金鑰和資料庫中非對稱金鑰的對稱金鑰。 建立資料庫主要金鑰時,系統會利用 AES_256 演算法和使用者提供的密碼來加密主要金鑰。 在 SQL Server 2008 和 SQL Server 2008 R2,使用 TRIPLE DES 演算法。 若要啟用主要金鑰的自動解密,必須利用服務主要金鑰來加密該金鑰的副本,並將它同時儲存在資料庫和 master 中。 通常,每當主要金鑰變更時,儲存在 master 中的副本便會以無訊息模式更新。 您可以使用 ALTER MASTER KEY 的 DROP ENCRYPTION BY SERVICE MASTER KEY 選項來變更這個預設值。 如果主要金鑰未以服務主要金鑰來加密,則必須使用 OPEN MASTER KEY 陳述式和密碼來開啟。

master 中之 sys.databases 目錄檢視的 is_master_key_encrypted_by_server 資料行會指出是否利用服務主要金鑰來加密資料庫主要金鑰。

您可以在 sys.symmetric_keys 目錄檢視中,看到有關資料庫主要金鑰的資訊。

針對 SQL Server 和平行處理資料倉儲,主要金鑰通常會受到服務主要金鑰及至少一個密碼保護。 若將資料庫實際移動到不同伺服器 (記錄傳送、還原備份等),資料庫會包含以原始伺服器服務主要金鑰加密的主要金鑰複本 (除非已使用 ALTER MASTER KEY DDL 明確移除此加密),以及在 CREATE MASTER KEY 或後續 ALTER MASTER KEY DDL 作業期間由每個指定密碼加密的複本。 若要在移動資料庫之後復原主要金鑰與所有資料 (已使用主要金鑰作為金鑰階層中的根加密),使用者必須使用 OPEN MASTER KEY 陳述式與其中一個用來保護主要金鑰的密碼來還原主要金鑰備份,或在新伺服器上還原原始服務主要金鑰的備份。

若是 SQL Database 和 Azure Synapse Analytics,在資料庫可以從某部伺服器移到另一部伺服器的情況下,密碼保護並非避免資料遺失的安全機制,因為主要金鑰上的服務主要金鑰保護是由 Microsoft Azure 平台來管理。 因此,主要金鑰密碼在 SQL Database 和 Azure Synapse Analytics 中為選擇性。

重要

您應該使用 BACKUP MASTER KEY 來備份主要金鑰,然後將該備份儲存在安全的離站位置。

服務主要金鑰和資料庫主要金鑰,皆使用 AES-256 演算法加以保護。

權限

需要資料庫的 CONTROL 權限。

範例

使用下列範例來在 master 資料庫中建立資料庫主要金鑰。 這個金鑰是利用密碼 23987hxJ#KL95234nl0zBe 來加密的。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe';
GO

另請參閱