支持的 .NET Framework 库

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

注释

如果在全局程序集缓存(GAC)中为不支持的程序集提供服务或升级,则为 SQL Server 提供服务或升级。 如果程序集同时存在于 SQL Server CLR 集成中。 如果在数据库中注册的 GAC 中服务或升级任何程序集(包括不支持的 .NET Framework 程序集),请确保使用 ALTER ASSEMBLY 语句服务或升级 SQL Server 数据库中程序集的副本。 有关详细信息,请参阅 知识库文章 949080

支持的库

从 SQL Server 开始,有一系列受支持的 .NET Framework 库,这些库已经过测试,以确保它们符合可靠性和安全标准,以便与 SQL Server 交互直接从全局程序集缓存(GAC)加载它们。

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

不支持的库

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

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

另请参阅

创建程序集
CLR 集成代码访问安全性
CLR 集成编程模型限制