CREATE MASTER KEY (Transact-SQL)

适用于: 是SQL Server(所有支持的版本) 是Azure SQL 数据库 是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 密码策略要求。 password 在 SQL 数据库和 Azure Synapse Analytics 中是可选的。

注解

数据库主密钥是指用于保护证书私钥的对称密钥以及数据库中存在的非对称密钥。 当创建主密钥时,会使用 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 数据库和 Azure Synapse Analytics,当数据库从一个服务器移动到另一个服务器时,密码保护不能视为防止数据丢失的安全机制,因为主密钥的服务主密钥保护由 Microsoft Azure 平台进行管理。 因此,主密钥密码在 SQL 数据库 和 Azure Synapse Analytics 中是可选的。

重要

你应该使用 BACKUP MASTER KEY 备份主密钥,并将备份存储于另外一个安全的位置中。

服务主密钥和数据库主密钥是通过使用 AES-256 算法进行保护的。

权限

要求对数据库具有 CONTROL 权限。

示例

使用以下示例在 master 数据库中创建数据库主密钥。 该密钥使用密码 23987hxJ#KL95234nl0zBe 进行加密。

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

另请参阅