在 SQL Server 中创建非对称密钥以访问 DLL 失败

在 SQL Server 中创建非对称密钥以访问 DLL 失败

我需要从 SQL 触发器访问 DLL (C#) 以满足我们的一个要求。我已经编译了 DLL,可以使用“创建程序集”将其加载到 SQL 服务器空间中,然后为其创建触发器。

TRUSTWORTHY我已通过设置标志将数据库设置为值得信赖ON

ALTER DATABASE %DBName% SET TRUSTWORTHY ON;

但在意识到这种做法不安全后,我用密钥(.snk文件)对 DLL 进行了签名,并尝试创建非对称密钥,然后根据密钥创建登录名,以便授予该登录名的外部访问权限。如果不将 DB 设置为可信,或者除非我创建可以使用密钥访问 DLL 的用户,否则我无法使用 DLL,因为它执行文件访问。因此,必须使用外部访问权限加载 DLL。但是在执行以下查询以创建非对称密钥时,我收到一条错误,该错误遵循以下查询:

USE [master];
GO
  CREATE ASYMMETRIC KEY [ClrPermissionsKey]
    AUTHORIZATION [dbo]
    FROM EXECUTABLE FILE = 'D:\Trigger\TriggerManager.dll'

“消息 15208,级别 16,状态 1,第 2 行

证书、非对称密钥或私钥文件不存在或格式无效。”

.snk 文件与 DLL 位于同一路径。在此请求您的帮助。

如果这不是正确的做法,请提出建议。

相关内容