CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

通过可扩展密钥管理 (EKM) 提供程序在 SQL Server 内创建加密提供程序。

Transact-SQL 语法约定

语法

CREATE CRYPTOGRAPHIC PROVIDER provider_name   
    FROM FILE = path_of_DLL  

注意

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

参数

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

path_of_DLL
实现 SQL Server 可扩展的密钥管理接口的 .dll 文件的路径。 使用用于 Microsoft Azure Key Vault 的 SQL Server 连接器时,默认位置是“C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll”。

备注

提供程序创建的所有密钥都将按照提供程序的 GUID 引用提供程序。 在 DLL 的所有版本中都将保留此 GUID。

必须使用任何证书对实现 SQLEKM 接口的 DLL 进行数字签名。 SQL Server 将验证此签名。 此签名包括其证书链,证书链的根目录必须安装在 Windows 系统的受信任的根证书颁发机构位置。 如果该签名未经正确验证,则 CREATE CRYPTOGRAPHIC PROVIDER 语句将失败。 有关证书和证书链的详细信息,请参阅 SQL Server 证书和对称密钥

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

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

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

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

权限

要求具有 CONTROL SERVER 权限,或者具有 sysadmin 固定服务器角色的成员身份。

示例

下面的示例通过 .dll 文件在 SQL Server 中创建名为 SecurityProvider 的加密提供程序。 此 .dll 文件命名为 c:\SecurityProvider\SecurityProvider_v1.dll 并安装在服务器上。 必须首先在服务器上安装此提供程序的证书。

-- Install the provider  
CREATE CRYPTOGRAPHIC PROVIDER SecurityProvider  
    FROM FILE = 'C:\SecurityProvider\SecurityProvider_v1.dll';  

另请参阅

可扩展的密钥管理 (EKM)
ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
使用 Azure Key Vault (SQL Server) 的可扩展密钥管理
使用 Azure Key Vault 设置 SQL Server TDE 可扩展密钥管理
sys.cryptographic_providers
sys.dm_cryptographic_provider_properties