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

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

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

  • Synchronization,指示 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指定值为 、、ExternalThreadingMayLeakOnAbortSecurityInfrastructureSelfAffectingProcessMgmntSharedStateSynchronizationSelfAffectingThreadingUIExternalProcessMgmt枚举。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 集成编程模型限制
创建程序集