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

Nat*_*ley 7 sql-server clr gac

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

程序集'system.web.extensions,version = 3.5.0.0,culture = neutral,publickeytoken = 31bf3856ad364e35.' 在SQL目录中找不到.(Microsoft SQL Server,错误:6503)

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

Nat*_*ley 9

显然我不能,根据微软论坛上的这篇帖子:

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

  • CustomMarshalers
  • Microsoft.VisualBasic程序
  • Microsoft.VisualC
  • mscorlib程序
  • 系统
  • 系统配置
  • 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 \)注册它们

例如:

从'C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll'创建汇编SystemWeb

with permission_set = unsafe

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

谢谢,

-Vineet.