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

时间:2009-07-27 17:09:24

标签: .net sql-server clr sqlclr

我有一个CLR存储过程,它引用在VS 2008中使用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程序集放入SQL 2005 CLR,除了我为每个程序写出'CREATE ASSEMBLY'命令?这样做有一些“最佳实践”方法吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

SQL Server 2005附带了v2.0.50727 CLR - 其中 NOT 还包含LINQ。

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

唯一很小的机会是在部署中包含所有相关的3.5系统程序集(即System.Linq,System.Data.Linq) - 它们都基于.NET 2.0 CLR,因此可能是可能 - 我个人可能不会费心去做,看起来工作太多而且麻烦太多。

SQL Server 2008 R2很可能会附带一个新的CLR(只是我的猜测 - 目前还没有官方确认或公告,AFAIK)。

马克