ALTER MASTER KEY (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics 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

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

PASSWORD ='password' 指定用于加密或解密数据库主密钥的密码。 password 必须符合运行 SQL Server 实例的计算机的 Windows 密码策略要求。

备注

可使用 REGENERATE 选项重新创建数据库主密钥和所有受该主密钥保护的密钥。 首先使用旧的主密钥对这些密钥进行解密,然后使用新的主密钥对它们进行加密。 在不危及主密钥安全性的前提下,应当将这种大量消耗资源的操作安排在资源需求较低的时段执行。

SQL Server 2012 (11.x) 使用 AES-256 加密算法来保护服务主密钥 (SMK) 和数据库主密钥 (DMK)。 AES 是一种比早期版本中使用的 3DES 更新的加密算法。 在将 数据库引擎 实例升级到 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

另请参阅