如何在SQL CLR项目中添加c#类库/类dll?

时间:2015-05-08 14:40:57

标签: c# sqlclr

如何在SQL CLR项目中添加c#类库/类dll?

我添加了类库dll / class dll但在程序集创建期间在SQL Server 2012中出错

  

程序集引用程序集&system; run.runtime.serialization,   version = 4.0.0.0,culture = neutral,当前不存在   数据库。 SQL Server尝试定位并自动加载   从引用程序集的相同位置引用程序集   来自,但该操作失败(原因:2(系统不能   找到指定的文件。))。请将引用的程序集加载到   当前数据库并重试您的请求。

1 个答案:

答案 0 :(得分:1)

您必须先注册不受支持的库,然后才能使用它们。

-- You will have to use the Runtime Serialization from .NET v3

ALTER DATABASE [<<Database Name>>] SET TRUSTWORTHY ON;
CREATE ASSEMBLY AnyName_You_Want
FROM 
--'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Runtime.Serialization.dll'
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.Runtime.Serialization.dll'
WITH PERMISSION_SET = UNSAFE;

摘录:

  

仍然可以从托管存储中调用不受支持的库   过程,触发器,用户定义的函数,用户定义的类型和   用户定义的聚合。必须首先是不受支持的库   使用 CREATE ASSEMBLY 在SQL Server数据库中注册   声明,在它可以在您的代码中使用之前。任何不受支持的库   应该检查并测试在服务器上注册和运行的内容   为了安全和可靠。

     

例如,不支持 System.DirectoryServices 命名空间。   您必须注册System.DirectoryServices.dll程序集    UNSAFE 权限,然后才能从代码中调用它。 UNSAFE   许可是必要的,因为在    System.DirectoryServices 命名空间不符合要求    SAFE EXTERNAL_ACCESS 。有关更多信息,请参阅CLR集成   编程模型限制和CLR集成代码访问   安全

CLR integration in SQL Server仅支持.NET Framework库的子集。 SQL Server中CLR集成支持的库/命名空间是:

  • 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
  • System.Core.dll
  • System.Xml.Linq.dll