共用方式為


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

從 SQL Server 2005 開始,Common Language Runtime (CLR) 提供了一個機制來使用 CLR (如 SQL Server) 主機可能需要的某些屬性,為屬於 .NET Framework 之一部分的 Managed 應用程式發展介面 (API) 加註。這類主機保護屬性 (HPA) 的範例包括:

  • SharedState,它可指出 API 是否會公開用來建立或管理共用狀態 (如靜態類別欄位) 的功能。

  • Synchronization,它可指出 API 是否會公開用來執行執行緒之間之同步處理的功能。

  • ExternalProcessMgmt,它可指出 API 是否會公開用來控制主機處理序的方法。

當提供了這些屬性時,SQL Server 會指定 HPA 的清單,這些 HPA 是透過程式碼存取安全性 (CAS) 的主控環境內所不允許的。CAS 需求是由以下三個 SQL Server 權限集合的其中一個所指定:SAFE、EXTERNAL_ACCESS 或 UNSAFE。當使用 CREATE ASSEMBLY 陳述式在伺服器上註冊此組件時,便會指定這三個安全性層級的其中一個。在 SAFE 或 EXTERNAL_ACCESS 權限集合內執行的程式碼必須避免某些已套用 System.Security.Permissions.HostProtectionAttribute 屬性的類型或成員。如需詳細資訊,請參閱<建立組件>和<CLR 整合程式設計模型限制>。

HostProtectionAttribute 並不是用來提升可靠性的一種安全性權限,因為它會識別主機可能不允許的特定程式碼建構 (類型或方法)。使用 HostProtectionAttribute 會強制使用有助於保護主機之穩定性的程式設計模型。

主機保護屬性

HPA 可識別不適合主機程式設計模型以及代表下列可靠性威脅等級提高的類型或成員:

  • 否則為良性。

  • 可能會導致受伺服器管理的使用者程式碼不穩定。

  • 可能會導致伺服器處理序本身的不穩定。

SQL Server 不允許使用具有 HostProtectionAttribute (會指定 ExternalProcessMgmt、ExternalThreading、MayLeakOnAbort、SecurityInfrastructure、SelfAffectingProcessMgmnt、SelfAffectingThreading、 SharedState、Synchronization 或 UI 值的 System.Security.Permissions.HostProtectionResource 列舉) 的類型或成員。這會讓組件無法呼叫可啟用共用狀態、執行同步處理、在終止時可能造成資源流失,或是會影響 SQL Server 處理序完整性的成員。

不允許的類型和成員

下列主題將識別一些類型和成員,SQL Server 不允許使用它們的 HostProtectionResource 值。

[!附註]

這些主題中的清單是從 .NET Framework 2.0 SP1 版本支援的組件所產生。如需詳細資訊,請參閱<支援的 .NET Framework 程式庫>。

本節內容