支持的 .NET Framework 库
适用于:SQL Server
公共语言运行时 (CLR) 托管在 SQL Server 中,可以在托管代码中创作存储过程、触发器、用户定义的函数、用户定义的类型和用户定义的聚合。 利用 .NET Framework 类库中的功能,您可以访问提供字符串操作、高级数学运算、文件访问和密码系统等功能的预建类。 可通过任何托管存储过程、用户定义类型、触发器、用户定义函数或用户定义聚合访问这些类。
注意
如果在 GAC) (全局程序集缓存中维护或升级不受支持的程序集,SQL Server应用程序可能会停止工作。 这是因为在 GAC 中维护或升级库不会更新SQL Server内的这些程序集。 如果程序集同时存在于 SQL Server 数据库和 GAC 中,则程序集的两个副本必须完全匹配。 如果不匹配,SQL Server CLR 集成使用程序集时,将发生错误。 如果在 GAC 中维护或升级也在数据库中注册的任何程序集(包括不受支持的.NET Framework程序集),请确保还使用 ALTER ASSEMBLY 语句为 SQL Server 数据库中的程序集副本提供服务或升级。 有关详细信息,请参阅 知识库文章 949080。
支持的库
从 2005 SQL Server (9.x) 开始,SQL Server提供了受支持的.NET Framework库的列表,这些库已经过测试,以确保它们符合与SQL Server交互的可靠性和安全性标准。 在代码中使用支持的库之前,无需在服务器上显式注册这些库;SQL Server直接从全局程序集缓存 (GAC) 加载它们。
SQL Server CLR 集成支持的库/命名空间包括:
- CustomMarshalers
- Microsoft.VisualBasic
- Microsoft.VisualC
- mscorlib
- 系统
- System.Configuration
- System.Core
- System.Data
- System.Data.OracleClient
- System.Data.SqlXml
- System.Deployment
- System.Security
- System.Transactions
- System.Web.Services
- System.Xml
- System.Xml.Linq
不支持的库
通过托管存储过程、触发器、用户定义函数、用户定义类型和用户定义聚合仍可以调用不支持的库。 必须先使用 CREATE ASSEMBLY 语句在 SQL Server 数据库中注册不支持的库,然后才能在代码中使用。 对于在服务器上注册和运行的任何不支持的库,应检查和测试其安全性和可靠性。
例如,不支持 System.DirectoryServices 命名空间。 必须先使用 UNSAFE 权限注册System.DirectoryServices.dll程序集,然后才能从代码调用它。 UNSAFE 权限是必需的,因为 System.DirectoryServices 命名空间中的类不符合 SAFE 或EXTERNAL_ACCESS的要求。 有关详细信息,请参阅 CLR 集成编程模型限制 和 CLR 集成代码访问安全性。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈