ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)

适用于:SQL Server

通过可扩展密钥管理 (EKM) 提供程序更改 SQL Server 中的加密提供程序。

Transact-SQL 语法约定

语法

ALTER CRYPTOGRAPHIC PROVIDER provider_name   
    [ FROM FILE = path_of_DLL ]  
    ENABLE | DISABLE  

注意

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

参数

provider_name
可扩展密钥管理提供程序的名称。

Path_of_DLL
实现 SQL Server 可扩展密钥管理接口的 .dll 文件的路径。

ENABLE | DISABLE
启用或禁用某个提供程序。

备注

如果提供程序更改了用于在 SQL Server 中实现可扩展密钥管理的 .dll 文件,则您必须使用 ALTER CRYPTOGRAPHIC PROVIDER 语句。

使用 ALTER CRYPTOGRAPHIC PROVIDER 语句更新 .dll 文件路径时,SQL Server 将执行以下操作:

  • 禁用该提供程序。
  • 验证 DLL 签名并确保该 .dll 文件的 GUID 与目录中记录的 GUID 相同。
  • 更新目录中的 DLL 版本。

当 EKM 提供程序设置为 DISABLE 时,新连接上任何要将该提供程序用于加密语句的尝试都将失败。

若要禁用某个提供程序,必须终止使用该提供程序的所有会话。

当 EKM 提供程序 dll 未实现所需的所有方法时,ALTER CRYPTOGRAPHIC PROVIDER 可能会返回错误 33085:

One or more methods cannot be found in cryptographic provider library '%.*ls'.

如果用于创建 EKM 提供程序 dll 的标头文件过期,ALTER CRYPTOGRAPHIC PROVIDER 可能会返回错误 33032:

SQL Crypto API version '%02d.%02d' implemented by provider is not supported. Supported version is '%02d.%02d'.

权限

要求具有加密提供程序的 CONTROL 权限。

示例

以下示例将 SQL Server 中一个名为 SecurityProvider 的加密提供程序更改为更新版本的 .dll 文件。 该新版本名为 c:\SecurityProvider\SecurityProvider_v2.dll 并且安装在服务器上。 服务器上必须安装有该提供程序的证书。

  1. 禁止该提供程序执行升级。 这样会终止所有打开的加密会话。
ALTER CRYPTOGRAPHIC PROVIDER SecurityProvider   
DISABLE;  
GO  
  1. 升级提供程序 .dll 文件。 GUID 必须与之前的版本相同,但该版本可以不同。
ALTER CRYPTOGRAPHIC PROVIDER SecurityProvider  
FROM FILE = 'c:\SecurityProvider\SecurityProvider_v2.dll';  
GO  
  1. 启用升级提供程序。
ALTER CRYPTOGRAPHIC PROVIDER SecurityProvider   
ENABLE;  
GO  

另请参阅

可扩展的密钥管理 (EKM)
CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
使用 Azure Key Vault (SQL Server) 的可扩展密钥管理