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

Common Language Runtime (CLR) 提供一種機制 SQL Server,從 SQL Server 2005 SQL Server 2005 開始,將受控應用程式程式設計介面標注 (API) .NET Framework。 這類主機保護屬性 (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不允許使用具有 指定值為 、 ExternalThreading 、、、 SelfAffectingThreadingSharedStateSynchronizationSelfAffectingProcessMgmntMayLeakOnAbortSecurityInfrastructureUI 的列舉 ExternalProcessMgmt 型別或成員。 HostProtectionAttributeSystem.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 整合程式設計模型限制
建立組件