ALTER MASTER KEY (Transact-SQL)

更改数据库主密钥的属性。

主题链接图标 Transact-SQL 语法约定

语法

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' }

参数

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

注释

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

SQL Server 2012 使用 AES-256 加密算法来保护服务主密钥 (SMK) 和数据库主密钥 (DMK)。 AES 是一种比早期版本中使用的 3DES 更新的加密算法。 在将数据库引擎实例升级到 SQL Server 2012 后,应重新生成 SMK 和 DMK,以便将主密钥升级到 AES。 有关重新生成 SMK 的详细信息,请参阅 ALTER SERVICE MASTER KEY (Transact-SQL)

当使用 FORCE 选项时,即使主密钥不可用,或者服务器不能对所有加密的私钥进行解密,该密钥重新生成的过程也会继续执行。 如果主密钥无法打开,则使用 RESTORE MASTER KEY 语句从备份中还原主密钥。 请仅在主密钥无法恢复或解密失败时,才使用 FORCE 选项。 仅由不可恢复密钥加密的信息将会丢失。

使用 DROP ENCRYPTION BY SERVICE MASTER KEY 选项,可以删除通过服务主密钥对数据库主密钥的加密。

ADD ENCRYPTION BY SERVICE MASTER KEY 使用服务主密钥对主密钥的副本进行加密,然后将副本存储在当前数据库和 master 中。

权限

要求具有数据库的 CONTROL 权限。 如果已使用密码对数据库主密钥进行了加密,则还需要了解该密码的相关信息。

示例

以下示例为 AdventureWorks 创建新的数据库主密钥,并且重新加密在加密层次结构中位于该主密钥之下的密钥。

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

请参阅

参考

CREATE MASTER KEY (Transact-SQL)

OPEN MASTER KEY (Transact-SQL)

CLOSE MASTER KEY (Transact-SQL)

BACKUP MASTER KEY (Transact-SQL)

RESTORE MASTER KEY (Transact-SQL)

DROP MASTER KEY (Transact-SQL)

CREATE DATABASE (Transact-SQL)

概念

加密层次结构

数据库分离和附加 (SQL Server)