将CLR扩展集成到SQL Server时如何引用GAC程序集

时间:2010-02-21 00:45:31

标签: sql-server clr gac

我在SQL Server 2008中为CLR集成创建了一个程序集。它有一个对System.Web.Extensions的引用,这是一个问题,因为当我尝试添加程序集时,我收到以下错误:

  

汇编'system.web.extensions,版本= 3.5.0.0,culture = neutral,publickeytoken = 31bf3856ad364e35。'在SQL目录中找不到。 (Microsoft SQL Server,错误:6503)

如何让SQL Server引用所需的程序集?

1 个答案:

答案 0 :(得分:9)

根据微软论坛上的this post,显然我不能这样做:

  

SQL Server 2005中的CLR集成仅支持.NET框架库的一个子集作为SQL Server中的引用和使用。这些是:

     
      
  • CustomMarshalers
  •   
  • Microsoft.VisualBasic程序
  •   
  • Microsoft.VisualC
  •   
  • mscorlib程序
  •   
  • 系统
  •   
  • System.Configuration
  •   
  • System.Data
  •   
  • System.Data.OracleClient的
  •   
  • System.Data.SqlXml
  •   
  • System.Deployment
  •   
  • System.Security
  •   
  • System.Transactions的
  •   
  • System.Web.Services
  •   
  • 的System.Xml
  •   
     

这些库已经过测试,以确保它们在SQL Server中运行是可靠的。可以在任何代码中引用这些库,而不必使用CREATE ASSEMBLY进行注册。这些是SQL Server允许CLR从GAC加载的唯一程序集。所有其他程序集(在.NET框架内或其他方面)需要在数据库中显式注册。为了可靠性和安全性,用户应该很好地测试这些库之外的任何代码。

     

虽然CLR集成不支持您尝试注册的程序集,但如果您很好地测试功能,则可以使用它们。注册system.web及其所有依赖项的简单方法是从.NET框架安装目录(通常是c:\ windows \ microsoft.net \ framework \)注册它们

     

e.g:

     

从'C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Web.dll'

创建汇编SystemWeb      

with permission_set = unsafe

     

由于所有依赖程序集都在同一目录中,因此SQL Server会自动注册它们。

     

谢谢,

     

-Vineet。