由于对 .net 程序集的引用而无法创建程序集

ome*_*sbk 2 .net c# sql-server clr

我正在尝试从特定的 dll 创建程序集。我执行的命令是

CREATE ASSEMBLY "xx.xx.blobviewer" from 'D:\xx\xx\xx\BlobSniffer\BlobSniffer.dll' WITH PERMISSION_SET = unsafe

我得到的响应消息是:

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

我试图将请求的 .net dll-s 复制到 BlobSniffer 文件夹,但在复制所有引用的程序集后,我得到了这个:

为程序集“BlobSniffer”创建程序集失败,因为程序集“microsoft.visualbasic.activities.compiler”格式错误或不是纯 .NET 程序集。无法验证的 PE 标头/本机存根。

第一个问题,为什么我什至需要复制 .net 程序集,它们不应该被自动检索吗?

第二个问题,程序集被标记为格式错误有什么问题?该程序集也是 .net 框架的一部分,并且没有外部类。

Rol*_*olo 5

看看这里:

http://msdn.microsoft.com/en-us/library/ms189524.aspx

它引用的系统程序集集是 SQL Server 中支持的以下程序集之一:

  • Microsoft.Visualbasic.dll
  • Mscorlib.dll
  • 系统数据文件
  • 系统文件
  • 系统文件
  • 微软Visualc.dll
  • Custommarshallers.dll
  • 系统安全文件
  • 系统.Web.Services.dll
  • 系统数据.SqlXml.dll
  • 系统核心文件
  • 系统文件.Linq.dll

可以引用其他系统程序集,但它们必须在数据库中显式注册。

http://blogs.msdn.com/b/psssql/archive/2013/02/23/unable-to-register-net-framework-assembly-not-in-the-supported-list.aspx

无论是哪个版本的 SQL Server,CREATE ASSEMBLY 都只允许注册纯 .NET 程序集。SQL Server 一直要求使用 CREATE ASSEMBLY 将要加载到 SQL Server 数据库的程序集仅包含 MSIL 指令(纯程序集)。如果要注册的程序集是混合程序集,CREATE ASSEMBLY 将引发上述错误。

我希望这有帮助。