共用方式為


主機保護屬性和 CLR 整合程序設計

適用於:SQL Server

Common Language Runtime (CLR) 提供一種機制,以標註屬於 .NET Framework 一部分的 Managed 應用程式程式設計介面(API)。 這些屬性可能會對 CLR 的主機感興趣,例如 SQL Server。 這類主機保護屬性的範例包括:

  • 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 的型別或成員,指定具有 ExternalProcessMgmtExternalThreadingMayLeakOnAbortSecurityInfrastructureSelfAffectingProcessMgmntSelfAffectingThreadingSharedStateSynchronizationSynchronizationUI值的 System.Security.Permissions.HostProtectionResource 列舉。 這可防止組件呼叫可啟用共用狀態、執行同步處理、可能造成終止時資源流失,或影響 SQL Server 程序完整性的成員。

不允許的類型和成員

下列文章會識別 HostProtectionResource SQL Server 不允許的類型和成員。

這些文章中的清單是從支援的元件產生。 如需詳細資訊,請參閱支援的 .NET Framework 連結庫。

在本節中

描述
不允許 Microsoft.VisualBasic.dll 中的類型和成員 列出不允許 HPA 值的 Microsoft.VisualBasic.dll 中的類型和成員。
不允許 mscorlib.dll 中的類型和成員 列出不允許其 HPA 值mscorlib.dll中的類型和成員。
不允許 System.dll 中的類型和成員 列出不允許其 HPA 值System.dll中的類型和成員。
不允許 System.Data.dll 中的類型和成員 列出不允許其 HPA 值System.Data.dll中的類型和成員。
不允許 System.Core.dll 中的類型和成員 列出不允許其 HPA 值System.Core.dll中的類型和成員。