使用.Net 3.5程序集SQL 2005 CLR?

使用.Net 3.5程序集SQL 2005 CLR?,.net,sql-server,clr,sqlclr,.net,Sql Server,Clr,Sqlclr,我有一个CLR存储过程,它引用在VS2008中创建的使用Linq的程序集。让我们将此程序集称为“MyLib” 我似乎无法将“MyLib”放入我的SQL 2005数据库。我做了以下工作: CREATE ASSEMBLY [MyLib] FROM 'C:\MyLib\bin\Release\MyLib.dll' WITH PERMISSION_SET = UNSAFE GO 但我得到了一个错误: Assembly 'MyLib' references assembly 'system.co

我有一个CLR存储过程,它引用在VS2008中创建的使用Linq的程序集。让我们将此程序集称为“MyLib”

我似乎无法将“MyLib”放入我的SQL 2005数据库。我做了以下工作:

CREATE ASSEMBLY [MyLib]
    FROM 'C:\MyLib\bin\Release\MyLib.dll'
WITH PERMISSION_SET = UNSAFE
GO
但我得到了一个错误:

Assembly 'MyLib' references assembly 'system.core, version=3.5.0.0, 
culture=neutral, publickeytoken=b77a5c561934e089.', 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: 2(error not found)). Please
load the referenced assembly into the current database and retry your request.

除了我为每个.Net 3.5程序集编写一个“createassembly”命令外,还有没有更简单的方法将所有.Net 3.5程序集都放入SQL 2005 CLR中?有什么“最佳实践”方法可以做到这一点吗?

SQL Server 2005随v2.0.50727 CLR一起提供-它还没有包括LINQ

您将无法在SQL 2005 CLR程序集中使用LINQ-您需要坚持使用原始的.NET 2.0程序集

唯一的可能性是在您的部署中包含所有相关的3.5系统程序集(即system.Linq、system.Data.Linq)——它们都基于.NET 2.0 CLR,因此这可能是可能的——我个人可能不会费心尝试,看起来工作量太大,麻烦太多

SQLServer2008R2很可能会附带一个新的CLR(我猜,暂时还没有官方确认或发布)

马克

退房。基本上,您必须手动获取要加载的新程序集,而不是从全局程序集缓存中自动加载它们


(2.0版和3.5版的CLR是相同的)

这个项目是我刚刚接手的,之前的程序员开始向所有内容添加Linq,但从未尝试在SQL 2005中重新注册程序集。如果你是对的,那么我还有很多工作要做。我暗自希望你是错的(这样我就不必做大量的工作),但我对这一点不抱多大希望。如果你查看Thorarin帖子中链接中的线程,我怀疑你会不会运气好:-(忘记发布使其工作的代码:CREATE ASSEMBLY[System.Core]从“C:\Program Files\Reference Assemblys\Microsoft\Framework\v3.5\System.Core.dll”中,权限为\u SET=UNSAFE GO一旦完成,MyLib程序集就可以正常工作。还忘记了:ALTER[数据库]将Trustly设置为ony您可能认为有人不辞辛劳地为他们制作了一个大型T-SQL脚本并将其发布到网络上……但我找不到:(从文档中可以看出:SQL Server还会在同一位置查找此程序集的任何依赖程序集,并将其上载。