ALTER ASYMMETRIC KEY (Transact-SQL)

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Microsoft Fabric SQL 数据库

更改非对称密钥的属性。

Transact-SQL 语法约定

注意

Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

语法

ALTER ASYMMETRIC KEY Asym_Key_Name <alter_option>  
  
<alter_option> ::=  
      <password_change_option>   
    | REMOVE PRIVATE KEY   

<password_change_option> ::=  
    WITH PRIVATE KEY ( <password_option> [ , <password_option> ] )  

<password_option> ::=  
      ENCRYPTION BY PASSWORD = 'strongPassword'  
    | DECRYPTION BY PASSWORD = 'oldPassword'  

参数

Asym_Key_Name
非对称密钥在数据库中所使用的名称。

REMOVE PRIVATE KEY
从非对称密钥中删除私钥,但不删除公钥。

WITH PRIVATE KEY
更改私钥的保护。

ENCRYPTION BY PASSWORD ='strongPassword'
指定用于保护私钥的新密码。 password 必须符合运行 SQL Server 实例的计算机的 Windows 密码策略要求。 如果省略该选项,则使用数据库主密钥对私钥进行加密。

DECRYPTION BY PASSWORD ='oldPassword'
指定当前用于保护私钥的旧密码。 如果私钥使用数据库主密钥进行加密,则不需要指定旧密码。

备注

如果没有 ENCRYPTION BY PASSWORD 选项所需的数据库主密钥,并且未提供任何密码,则该操作将失败。 有关如何创建数据库主密钥的信息,请参阅 CREATE MASTER KEY (Transact-SQL)

您可以按下表所示,指定 PRIVATE KEY 选项,然后使用 ALTER ASYMMETRIC KEY 更改私钥的保护。

更改其保护 ENCRYPTION BY PASSWORD DECRYPTION BY PASSWORD
旧密码到新密码 必选 必需
密码到主密钥 省略 必选
主密钥到密码 必选 省略

必须首先打开数据库主密钥,然后才能使用它来保护私钥。 有关详细信息,请参阅 OPEN MASTER KEY (Transact-SQL)

若要更改非对称密钥的所有权,请使用 ALTER AUTHORIZATION

权限

如果要删除私钥,则要求对非对称密钥具有 CONTROL 权限。

示例

A. 更改私钥的密码

以下示例更改用于保护非对称密钥 PacificSales09 的私钥的密码。 新密码为 <enterStrongPasswordHere>

ALTER ASYMMETRIC KEY PacificSales09   
    WITH PRIVATE KEY (  
    DECRYPTION BY PASSWORD = '<oldPassword>',  
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>');  
GO  

B. 从非对称密钥中删除私钥

以下示例从 PacificSales19 中删除私钥,只保留公钥。

ALTER ASYMMETRIC KEY PacificSales19 REMOVE PRIVATE KEY;  
GO  

C. 从私钥中删除密码保护

以下示例从私钥中删除密码保护,然后使用数据库主密钥来保护该私钥。

OPEN MASTER KEY DECRYPTION BY PASSWORD = '<database master key password>';  
ALTER ASYMMETRIC KEY PacificSales09 WITH PRIVATE KEY (  
    DECRYPTION BY PASSWORD = '<enterStrongPasswordHere>' );  
GO  

另请参阅

CREATE ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
SQL Server 和数据库加密密钥(数据库引擎)
加密层次结构
CREATE MASTER KEY (Transact-SQL)
OPEN MASTER KEY (Transact-SQL)
可扩展的密钥管理 (EKM)