【问题标题】:Troubles creating assembly in MS SQL Server在 MS SQL Server 中创建程序集的问题
【发布时间】:2018-05-19 03:25:33
【问题描述】:

我打算将带有 SQL 函数的 .NET 程序集导入 MS SQL Server。

我一直在尝试这样导入:

CREATE ASSEMBLY [AssemblyName]
AUTHORIZATION [dbo]
FROM 0x4D5A9000030...

它是由我在 Visual Studio 中的 SQL 项目生成的

之后我还需要创建引用的程序集,例如“Microsoft.CSharp”

CREATE ASSEMBLY [Microsoft.CSharp]
FROM 'path to dll'
WITH PERMISSION_SET = UNSAFE

然后我得到这样的错误:

程序集“Microsoft.CSharp”引用程序集“system.dynamic, version=4.0.0.0,culture=neutral, publickeytoken=b03f5f7f11d50a3a.”,当前数据库中不存在。 SQL Server 试图从引用程序集所在的同一位置定位并自动加载引用程序集,但该操作失败(原因:2(系统找不到指定的文件。))。请将引用的程序集加载到当前数据库中,然后重试您的请求。

现在我真的不明白。据我所知,System.Dynamic 不是程序集,而是 System.Core.dll 中的命名空间。并且 System.Core 受 MS SQL Server 支持并默认导入。有什么办法可以解决此类问题并成功导入此类程序集?

【问题讨论】:

  • 对此不是 100% 确定,但我认为 Microsoft.CSharp 之类的东西在 GAC 中,不需要注册。

标签: c# .net sql-server


【解决方案1】:

那个 (System.Dynamic.dll) 确实是一个程序集 - 您可以在 GAC 和磁盘上找到它;它有很多 C# 用来实现dynamic 的实现细节。您通常看不到它,因为所有类型都是internal,但它使用:

[assembly: InternalsVisibleTo("Microsoft.CSharp, PublicKey =002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]

因此这些实现细节可供 Micrsoft.CSharp.dll 使用

这里的数据库是 100% 正确的。

【讨论】:

  • 谢谢,我真的在 GAC 中找到了这个程序集,导入它,一切都像魅力一样工作
猜你喜欢
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 2020-06-11
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多