ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)

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

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

语法

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

参数

  • 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 提供程序未实现所有必需的方法时,ALTER CRYPTOGRAPHIC PROVIDER 可能返回错误 33085:

无法在加密提供程序库“%.*ls”中找到一个或多个方法。

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

不支持提供程序实现的 SQL Crypto API 版本 '%02d.%02d'。支持的版本为 '%02d.%02d'。

权限

需要对加密提供程序拥有 CONTROL 权限。

示例

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

/* First, disable the provider to perform the upgrade.
This will terminate all open cryptographic sessions */
ALTER CRYPTOGRAPHIC PROVIDER SecurityProvider 
DISABLE;
GO

/* Upgrade the provider .dll file. The GUID must the same
as the previous version, but the version can be different. */
ALTER CRYPTOGRAPHIC PROVIDER SecurityProvider
FROM FILE = 'c:\SecurityProvider\SecurityProvider_v2.dll';
GO

/* Enable the upgraded provider. */
ALTER CRYPTOGRAPHIC PROVIDER SecurityProvider 
ENABLE;
GO