OPEN MASTER KEY (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
打开当前数据库的数据库主密钥。
语法
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'
注意
Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。
参数
'password'
对数据库主密钥加密的密码。
注解
如果数据库主密钥使用服务主密钥进行加密,则在需要此数据库主密钥进行解密或加密时,它将自动打开。 在这种情况下,不必使用 OPEN MASTER KEY 语句。
当数据库第一次附加或还原到新的 SQL Server实例时,数据库主密钥(由服务主密钥加密)的副本尚未存储在服务器中。 必须使用 OPEN MASTER KEY 语句解密数据库主密钥 (DMK)。 一旦 DMK 解密后,通过使用 ALTER MASTER KEY REGENERATE 语句向服务器提供 DMK(使用服务主密钥 (SMK) 加密)的副本,即可拥有将来启用自动解密的选项。 当数据库已从较早版本升级后,应重新生成 DMK 以使用更新的 AES 算法。 有关重新生成 DMK 的详细信息,请参阅 ALTER MASTER KEY (Transact-SQL)。 重新生成 DMK 密钥以升级到 AES 所需的时间取决于 DMK 保护的对象数。 重新生成 DMK 密钥以升级到 AES 只在必需时执行一次,不影响将来作为密钥循环策略的一部分而重新生成的过程。
通过使用带 DROP ENCRYPTION BY SERVICE MASTER KEY 选项的 ALTER MASTER KEY 语句,可从自动密钥管理中排除特定数据库的数据库主密钥。 然后,必须显式打开带密码的数据库主密钥。
如果数据库主密钥在其中显式打开的事务回滚,则此密钥将保持打开。
权限
要求对数据库具有 CONTROL 权限。
示例
以下示例将打开使用密码加密的 AdventureWorks2022
数据库的数据库主密钥。
USE AdventureWorks2022;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '43987hkhj4325tsku7';
GO
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
以下示例将打开使用密码加密的 master 数据库。
USE master;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '43987hkhj4325tsku7';
GO
CLOSE MASTER KEY;
GO