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

適用於:SQL Server

Common Language Runtime (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 語句在伺服器上註冊元件時,會指定這三個安全性層級的其中一個。 在 SAFEEXTERNAL_ACCESS許可權集合內執行的程式碼必須避免套用System.Security.Permissions.HostProtectionAttribute屬性的特定類型或成員。 如需詳細資訊,請參閱 建立元件CLR 整合程式設計模型限制

HostProtectionAttribute不是安全性許可權,因為它可識別主機可能不允許的特定程式碼建構類型或方法, 使用 HostProtectionAttribute會強制執行程式設計模型,以協助保護主機的穩定性。

主機保護屬性

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

  • 否則為良性。

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

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

SQL Server不允許使用具有HostProtectionAttribute的類型或成員,其指定System.Security.Permissions.HostProtectionResource列舉,其值為ExternalProcessMgmtExternalThreadingMayLeakOnAbortSecurityInfrastructureSelfAffectingProcessMgmntSelfAffectingThreadingSharedStateSynchronizationUI. 這可防止組件呼叫可啟用共用狀態、執行同步處理、可能造成終止時資源流失,或影響 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 整合程式設計模型限制
建立組件