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

适用于:SQL Server

公共语言运行时 (CLR) 提供了一种机制,用于使用SQL Server 2005 ( (9.x) ) 开始,使用.NET Framework一部分的托管应用程序编程接口(例如SQL Server)批注作为.NET Framework一部分的托管应用程序编程接口。 这种宿主保护属性 (HPA) 的示例包括:

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

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

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

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

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

宿主保护属性

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

  • 在其他方面为良性。

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

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

SQL Server禁止使用具有 HostProtectionAttribute 的类型或成员,该类型或成员指定值为 ExternalProcessMgmtExternalThreadingMayLeakOnAbortSecurityInfrastructureSelfAffectingProcessMgmnt、SelfAffectingThreading、SharedStateSynchronization 或 UI 的 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 集成编程模型限制
创建程序集