我需要从SQL触发器访问一个DLL(C#)来满足我们的一个要求。 我编译了DLL,并可以使用“创build程序集”在SQL服务器空间中加载它,然后为其创build一个触发器。
通过设置TRUSTWORTHY标志,我已经将数据库设置为值得信任的数据库。
ALTER DATABASE %DBName% SET TRUSTWORTHY ON;
但是在意识到这是不安全的方式之后,我用一个密钥( .snk文件)签署了DLL,并尝试创build一个非对称密钥,然后根据密钥创build一个login名,我可以为他们提供外部访问权限。 要么没有将数据库设置为值得信赖,要么除非我创build了可以使用密钥访问DLL的用户,否则我不能使用该DLL,因为它执行文件访问。 因此,DLL必须加载一个外部访问权限。 但是在做下面的查询来创build非对称密钥时,我得到一个查询后面的错误,
USE [master]; GO CREATE ASYMMETRIC KEY [ClrPermissionsKey] AUTHORIZATION [dbo] FROM EXECUTABLE FILE = 'D:\Trigger\TriggerManager.dll'
“消息15208,16级,状态1,2号线
- Sybase沉重的磁盘I / O问题
- SQL Server表分区和RAID级别的影响
- Hadoop Hive,Impala,Pig等 – SQL访问Hadoop?
- Sql按时间分区表
- 使用值而不是占位符显示或logging长查询
证书,非对称密钥或私钥文件不存在或格式无效。
.snk文件与DLL的path相同。 在这里请求你的帮助。
如果这不是正确的做法,请提出build议。