主機保護屬性和 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 許可權集合之一所指定: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
、Synchronization
或 UI
值的 System.Security.Permissions.HostProtectionResource
列舉。 這可防止組件呼叫可啟用共用狀態、執行同步處理、可能造成終止時資源流失,或影響 SQL Server 程序完整性的成員。
不允許的類型和成員
下列文章會識別 HostProtectionResource
SQL Server 不允許的類型和成員。
這些文章中的清單是從支援的元件產生。 如需詳細資訊,請參閱
在本節中
品 | 描述 |
---|---|
不允許 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中的類型和成員。 |