我在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引用所需的程序集?
答案 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'
创建汇编SystemWebwith permission_set = unsafe
由于所有依赖程序集都在同一目录中,因此SQL Server会自动注册它们。
谢谢,
-Vineet。