【问题标题】:How to reference GAC assemblies when integrating a CLR extension into SQL Server将 CLR 扩展集成到 SQL Server 时如何引用 GAC 程序集
【发布时间】:2010-02-21 00:45:31
【问题描述】:

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

组装'system.web.extensions,版本=3.5.0.0,文化=中性,publickeytoken=31bf3856ad364e35。'在 SQL 目录中找不到。 (Microsoft SQL Server,错误:6503)

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

【问题讨论】:

  • 你在 System.Web.Extensions 中引用了什么?
  • JavaScriptSerializer - 但没关系,我只是编写了自己的 JSON 解析器,因此无需引用任何东西 :)
  • 如果您打开 JSON 解析器的代码,那将非常有帮助。
  • 我也有同样的问题。我正在使用 HttpWebRequest。而且我无法将我的 dll 添加到程序集中 :(,如果你找到了解决这个问题的方法,请告诉我们,谢谢。

标签: sql-server clr gac


【解决方案1】:

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

SQL Server 2005 中的 CLR 集成仅支持 .NET 框架库的子集作为 SQL Server 内部引用和使用。它们是:

  • 自定义编组器
  • Microsoft.VisualBasic
  • Microsoft.VisualC
  • mscorlib
  • 系统
  • 系统配置
  • System.Data
  • System.Data.OracleClient
  • System.Data.SqlXml
  • System.Deployment
  • 系统安全
  • 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 = 不安全

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

谢谢,

-Vineet。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多