分享方式:


ALTER MASTER KEY (Transact-SQL)

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

變更資料庫主要金鑰的屬性。

Transact-SQL 語法慣例

語法

-- Syntax for SQL Server

ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD = 'password'

<encryption_option> ::=
    ADD ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }
    |
    DROP ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }
-- Syntax for Azure SQL Database
-- Note: DROP ENCRYPTION BY SERVICE MASTER KEY is not supported on Azure SQL Database.

ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD = 'password'

<encryption_option> ::=
    ADD ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }
    |
    DROP ENCRYPTION BY { PASSWORD = 'password' }
-- Syntax for Azure Synapse Analytics and Analytics Platform System

ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD ='password'

<encryption_option> ::=
    ADD ENCRYPTION BY SERVICE MASTER KEY
    |
    DROP ENCRYPTION BY SERVICE MASTER KEY

引數

PASSWORD ='password' 指定用於加密或解密資料庫主要金鑰的密碼。 password 必須符合執行 SQL Server 執行個體的電腦的 Windows 密碼原則需求。

備註

REGENERATE 選項會重新建立資料庫主要金鑰和它保護的所有金鑰。 會先利用舊的主要金鑰解密這些金鑰,然後利用新的主要金鑰加密它們。 除非已危害到主要金鑰,否則,這項需要大量資源的作業應該安排在低需求時進行。

SQL Server 2012 (11.x) 使用 AES 加密演算法保護服務主要金鑰 (SMK) 及資料庫主要金鑰 (DMK)。 與舊版中使用的 3DES 相比,AES 是一種較新的加密演算法。 將資料庫引擎執行個體升級至 SQL Server 2012 (11.x) 之後,應該會重新產生 SMK 和 DMK,以將主要金鑰升級至 AES。 如需重新產生 SMK 的詳細資訊,請參閱 ALTER SERVICE MASTER KEY

當使用 FORCE 選項時,即使主要金鑰無法使用或伺服器無法解密所有加密私密金鑰,仍會繼續重新產生金鑰。 如果無法開啟主要金鑰,請使用 RESTORE MASTER KEY 陳述式,從備份還原主要金鑰。 請只在主要金鑰無法擷取或解密失敗時才使用 FORCE 選項。 只由無法擷取的金鑰加密的資訊會遺失。

DROP ENCRYPTION BY SERVICE MASTER KEY 選項會移除服務主要金鑰對資料庫主要金鑰所執行的加密。

ADD ENCRYPTION BY SERVICE MASTER KEY 會造成利用服務主要金鑰來加密主要金鑰的副本,並將該副本同時儲存在目前資料庫和 master 中。

權限

需要資料庫的 CONTROL 權限。 如果已利用密碼加密資料庫主要金鑰,則還需要知道該密碼。

範例

下列範例會建立 AdventureWorks 的新資料庫主要金鑰,並在加密階層中重新加密在它下方的金鑰。

USE AdventureWorks2022;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'dsjdkflJ435907NnmM#sX003';
GO

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

下列範例會建立 AdventureWorksPDW2012 的新資料庫主要金鑰,並在加密階層中重新加密其下方的金鑰。

USE master;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'dsjdkflJ435907NnmM#sX003';
GO

另請參閱