Common Language Runtime (CLR) 提供一種機制,以批注 Managed 應用程式開發介面(API),這些介面是 .NET Framework 的一部分,其中包含某些屬性,這些屬性可能與 SQL Server 主機感興趣,例如 SQL Server,從 SQL Server 2005 開始。 這類主機保護屬性的範例包括:
SharedState,指出 API 是否公開建立或管理共享狀態的能力(例如靜態類別字段)。Synchronization,指出 API 是否公開在線程之間執行同步處理的能力。ExternalProcessMgmt,指出 API 是否公開控制主機進程的方式。
根據這些屬性,SQL Server 會指定不允許在託管環境中透過程式代碼存取安全性 (CAS) 的 HPA 清單。 CAS 需求是由三個 SQL Server 許可權集合之一所指定:SAFE、EXTERNAL_ACCESS或 UNSAFE。 使用 CREATE ASSEMBLY 語句在伺服器上註冊元件時,會指定這三個安全性層級之一。 在 SAFE 或 EXTERNAL_ACCESS 許可權集合內執行的程式代碼必須避免套用 System.Security.Permissions.HostProtectionAttribute 屬性的特定類型或成員。 如需詳細資訊,請參閱 建立元件 和 CLR 整合程式設計模型限制。
HostProtectionAttribute與其說是改善可靠性的方法,不如安全性許可權,因為它會識別主機可能不允許的特定程式代碼建構類型或方法。 使用 HostProtectionAttribute 會強制執行程序設計模型,以協助保護主機的穩定性。
主機保護屬性
HPA 會識別不符合主機程式設計模型的類型或成員,並代表下列增加的可靠性威脅層級:
不是良性。
可能會導致伺服器管理的使用者程式碼不穩定。
可能會導致伺服器處理序本身不穩定。
SQL Server 不允許使用具有 HostProtectionAttribute 的型別或成員,指定具有 System.Security.Permissions.HostProtectionResource、ExternalProcessMgmt、ExternalThreading、MayLeakOnAbort、SecurityInfrastructure、SelfAffectingProcessMgmt、SelfAffectingThreading、SharedState、SharedState或 UI值的 列舉。 這可防止組件呼叫可啟用共用狀態、執行同步處理、可能造成終止時資源流失,或影響 SQL Server 程序完整性的成員。
不允許的類型和成員
下列主題會識別 SQL Server 不允許其 HostProtectionResource 值的類型和成員。
備註
這些主題中的清單是從支援的元件產生。 如需詳細資訊,請參閱 支援的 .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中的類型和成員。