宿主保护属性和 CLR 集成编程

适用于:SQL Server

公共语言运行时(CLR)提供一种机制,用于批注托管应用程序编程接口(API),该接口是 .NET Framework 的一部分,这些接口具有某些属性,这些属性可能与 CLR 的主机(如 SQL Server)相关,从 SQL Server 2005(9.x 开始)。 这种宿主保护属性 (HPA) 的示例包括:

  • SharedState,它指示 API 是否公开了创建或管理共享状态(例如静态类字段)的能力。

  • 同步,指示 API 是否公开了在线程之间执行同步的能力。

  • ExternalProcessMgmt,指示 API 是否公开控制主机进程的方法。

鉴于这些属性,SQL Server 指定通过代码访问安全性(CAS)在托管环境中不允许的 HPA 列表。 CAS 要求由三个 SQL Server 权限集之一指定: SAFEEXTERNAL_ACCESSUNSAFE。 使用 CREATE ASSEMBLY 语句在服务器上注册程序集时,指定这三个安全级别之一。 在 SAFE 或 EXTERNAL_ACCESS 权限集中执行的代码必须避免应用 System.Security.Permissions.HostProtectionAttribute 属性的某些类型或成员 有关详细信息,请参阅 创建程序集CLR 集成编程模型限制

HostProtectionAttribute 不是提高可靠性的方法的安全权限,因为它标识主机可能禁止的特定代码构造(类型或方法)。 使用 HostProtectionAttribute 强制实施有助于保护主机稳定性的编程模型。

宿主保护属性

HPA 可标识不适合宿主编程模型的类型或成员,并表示可靠性威胁的以下递增级别:

  • 在其他方面为良性。

  • 可能会导致反序列化服务器托管的用户代码。

  • 可能会导致反序列化服务器进程本身。

SQL Server 禁止使用具有 HostProtectionAttribute 的类型或成员,该类型或成员指定具有 ExternalProcessMgmt、ExternalThreading、MayLeakOnAbort、SecurityInfrastructureSelfAffectingProcessMgmntSelfAffectingThreading、SharedStateSynchronizationUI 的值的 System.Security.Permissions.HostProtectionResource 枚举。 这样可防止程序集调用启用共享状态、执行同步、终止时可能导致资源泄漏或影响 SQL Server 进程的完整性的成员。

不允许的类型和成员

以下主题标识 SQL Server 不允许其 HostProtectionResource 值的类型和成员。

注意

这些主题中的列表是通过受支持的程序集生成的。 有关详细信息,请参阅 支持的 .NET Framework 库

本节内容

Microsoft.VisualBasic.dll 中禁用的类型和成员
列出了 Microsoft.VisualBasic.dll 中其 HPA 值被禁用的类型和成员。

mscorlib.dll 中禁用的类型和成员
列出了 mscorlib.dll 中其 HPA 值被禁用的类型和成员。

System.dll 中禁用的类型和成员
列出了 System.dll 中其 HPA 值被禁用的类型和成员。

System.Data.dll 中禁用的类型和成员
列出了 System.Data.dll 中其 HPA 值被禁用的类型和成员。

System.Core.dll 中禁用的类型和成员
列出了 System.Core.dll 中其 HPA 值被禁用的类型和成员。

另请参阅

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