程序集 'System.Threading.Channels' 引用程序集 'system.threading.tasks.extensions, v.',它不存在于当前数据库中
Assembly 'System.Threading.Channels' references assembly 'system.threading.tasks.extensions, v.', which is not present in the current database
我正在尝试将 DLL 添加到 SQL 服务器:
CREATE ASSEMBLY ClassLibrary1
AUTHORIZATION dbo
FROM 'C:\Debug\ClassLibrary1.dll'
WITH PERMISSION_SET = UNSAFE
GO
正如你在这里看到的我的 DLL
但是我得到这个错误:
Assembly 'System.Threading.Channels' references assembly 'system.threading.tasks.extensions, version=4.2.0.0, culture=neutral, publickeytoken=cc7b13ffcd2ddd51.', which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: version, culture or public key mismatch). Please load the referenced assembly into the current database and retry your request.
当所有引用的 DLL 都可用时,为什么我会收到此错误?
嗯,有趣 - 您创建程序集的方式应该会自动创建扩展 dll。
两件事:
- 我假设您已经手动将所有 dll 复制到您的目录中。如果
所以确保 dll 的版本是正确的,即
通道 dll 使用的扩展版本是您拥有的版本
目录。
- 也可能是无法将扩展创建为
SQL 中的程序集,因为并非所有 clr dll 都被允许。尝试创建
手动扩展 dll,然后是频道 dll。
有些 dll 很难部署到数据库中是有原因的 - 所以也许问问自己是否可以从数据库外部用您的 dll 完成您想做的事情。每次看到 dll 引用 System.Threading 和 System.Memory 我都很担心。
哦,我明白你想做什么了——你想呼叫 Rabbit,我假设你使用的是最新的 Rabbit 客户端 dll。我有一个模糊的回忆,后来的 dll 不能部署到 SQL。实际上,我在 2017 年写了一篇关于如何做到这一点的博客 post。Have a look at the post,看看它是否对你有帮助。
我正在尝试将 DLL 添加到 SQL 服务器:
CREATE ASSEMBLY ClassLibrary1
AUTHORIZATION dbo
FROM 'C:\Debug\ClassLibrary1.dll'
WITH PERMISSION_SET = UNSAFE
GO
正如你在这里看到的我的 DLL
但是我得到这个错误:
Assembly 'System.Threading.Channels' references assembly 'system.threading.tasks.extensions, version=4.2.0.0, culture=neutral, publickeytoken=cc7b13ffcd2ddd51.', which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: version, culture or public key mismatch). Please load the referenced assembly into the current database and retry your request.
当所有引用的 DLL 都可用时,为什么我会收到此错误?
嗯,有趣 - 您创建程序集的方式应该会自动创建扩展 dll。
两件事:
- 我假设您已经手动将所有 dll 复制到您的目录中。如果 所以确保 dll 的版本是正确的,即 通道 dll 使用的扩展版本是您拥有的版本 目录。
- 也可能是无法将扩展创建为 SQL 中的程序集,因为并非所有 clr dll 都被允许。尝试创建 手动扩展 dll,然后是频道 dll。
有些 dll 很难部署到数据库中是有原因的 - 所以也许问问自己是否可以从数据库外部用您的 dll 完成您想做的事情。每次看到 dll 引用 System.Threading 和 System.Memory 我都很担心。
哦,我明白你想做什么了——你想呼叫 Rabbit,我假设你使用的是最新的 Rabbit 客户端 dll。我有一个模糊的回忆,后来的 dll 不能部署到 SQL。实际上,我在 2017 年写了一篇关于如何做到这一点的博客 post。Have a look at the post,看看它是否对你有帮助。