使用 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
类不符合 SAFE
或 EXTERNAL_ACCESS
。 有关详细信息,请参阅 CLR 集成编程模型限制 和 CLR 集成代码访问安全性。