问题描述
我正在尝试将DLL添加到SQL Server:
CREATE ASSEMBLY ClassLibrary1
AUTHORIZATION dbo
FROM 'C:\Debug\ClassLibrary1.dll'
WITH PERMISSION_SET = UNSAFE
GO
您可以在这里看到我的DLLs
但是我得到这个错误:
程序集'System.Threading.Channels'引用程序集'system.threading.tasks.extensions,版本= 4.2.0.0,区域性=中性,publickeytoken = cc7b13ffcd2ddd51。”,当前数据库中不存在。 SQL Server试图从引用程序集所在的位置查找并自动加载引用程序集,但该操作失败(原因:版本,区域性或公钥不匹配)。请将引用的程序集加载到当前数据库中,然后重试您的请求。
为什么所有引用的DLL都可用时出现此错误?
解决方法
嗯,很有趣-您创建扩展名dll的程序集的方式应该已经自动创建。
事物的结合:
- 我假设您已将所有dll手动复制到目录中。如果 因此请确保dll的版本正确,即 dll使用的扩展版本是您拥有的版本 目录。
- 也可能是无法将扩展名创建为 SQL中的汇编,因为不是所有的clr dll都被允许。尝试创建 手动扩展dll,然后添加频道dll。
有些原因很难将某些dll部署到数据库中-因此,也许要问自己是否可以从db之外完成对dll的处理。每当我看到dll引用System.Threading和System.Memory时,我都会感到担心。
哦,我明白了您想做什么-您想调用Rabbit,并且我假设您正在使用最新的Rabbit客户端dll之一。我有一个模糊的回忆,以后的dll无法部署到SQL。实际上,我早在2017年就写过一篇有关如何执行此操作的博客文章。Have a look at the post,看它是否对您有帮助。