支持的 .NET Framework 库

借助驻留在 SQL Server 中的公共语言运行时 (CLR),您可以采用托管代码创作存储过程、触发器、用户定义函数、用户定义类型和用户定义聚合。利用 .NET Framework 类库中的功能,您可以访问提供字符串操作、高级数学运算、文件访问和密码系统等功能的预建类。可通过任何托管存储过程、用户定义类型、触发器、用户定义函数或用户定义聚合访问这些类。

注意注意

如果在全局程序集缓存 (GAC) 中对不支持的程序集提供服务或升级,SQL Server 应用程序可能会停止运行。其原因在于在 GAC 中对库提供服务或升级并不会更新 SQL Server 中的相应程序集。如果某一程序集存在于 SQL Server 数据库和 GAC 中,该程序集的两个副本必须完全匹配。否则,当 SQL Server CLR 集成使用该程序集时,将发生错误。如果在 GAC 中提供服务或升级的任何程序集(包括不支持的 .NET Framework 程序集)同时已在数据库中注册,请确保使用 ALTER ASSEMBLY 语句对 SQL Server 数据库中的程序集副本同时提供相应服务或升级。有关详细信息,请参阅知识库文章 949080

支持的库

从 SQL Server 2005 开始,SQL Server 包含一系列支持的 .NET Framework 库,已对这些库进行测试,确保它们满足与 SQL Server 集成的可靠性和安全性标准。在代码中使用支持的库之前,您不需要在服务器上显式注册这些库;SQL Server 从全局程序集缓存 (GAC) 中直接加载这些库。

在 SQL Server 中,CLR 集成支持的库/命名空间包括:

  • CustomMarshalers

  • Microsoft.VisualBasic

  • Microsoft.VisualC

  • mscorlib

  • System

  • 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

不支持的库

通过托管存储过程、触发器、用户定义函数、用户定义类型和用户定义聚合仍可以调用不支持的库。必须首先使用 CREATE ASSEMBLY 语句在 SQL Server 数据库中注册不支持的库,然后才能在代码中使用它们。对于在服务器上注册和运行的任何不支持的库,应检查和测试其安全性和可靠性。

例如,不支持 System.DirectoryServices 命名空间。您必须使用 UNSAFE 权限注册 System.DirectoryServices.dll 程序集,然后才能从代码中调用它。UNSAFE 权限是必需的,这是因为 System.DirectoryServices 命名空间中的类不满足 SAFE 或 EXTERNAL_ACCESS 要求。有关详细信息,请参阅 CLR 集成编程模型限制CLR 集成代码访问安全性