分享方式:


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

適用於:SQL Server

Common Language Runtime (CLR) 提供一種機制,從 SQL Server 2005 (9.x) 開始,將受管理的應用程式程序設計介面 (API) 標註為 .NET Framework 的一部分,這些介面具有某些可能感興趣的 CLR 主機屬性,例如 SQL Server。 這類主機保護屬性的範例包括:

  • SharedState,指出 API 是否公開建立或管理共享狀態的能力(例如靜態類別欄位)。

  • 同步處理,指出 API 是否公開在線程之間執行同步處理的能力。

  • ExternalProcessMgmt,指出 API 是否公開控制主機進程的方式。

根據這些屬性,SQL Server 會指定不允許在託管環境中透過程式代碼存取安全性 (CAS) 的 HPA 清單。 CAS 需求是由三個 SQL Server 許可權集合之一所指定: SAFEEXTERNAL_ACCESSUNSAFE。 使用 CREATE ASSEMBLY 語句在伺服器上註冊元件時,會指定這三個安全性層級的其中一個。 在 SAFE 或 EXTERNAL_ACCESS 許可權集合內執行的程式代碼必須避免套用 System.Security.Permissions.HostProtectionAttribute 屬性的特定類型或成員 如需詳細資訊,請參閱 建立元件CLR 整合程式設計模型限制

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

主機保護屬性

HPA 會識別不符合主機程式設計模型的類型或成員,並代表下列增加的可靠性威脅層級:

  • 不是良性。

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

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

SQL Server 不允許使用具有 HostProtectionAttribute 的類型或成員,該類型或成員會指定 System.Security.Permissions.HostProtectionResource 列舉,其值為 ExternalProcessMgmtExternalThreadingMayLeakOnAbort、SecurityInfrastructure、SelfAffectingProcessMgmntSelfAffectingThreadingSharedStateSynchronizationUI 這可防止組件呼叫可啟用共用狀態、執行同步處理、可能造成終止時資源流失,或影響 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中的類型和成員。

另請參閱

CLR 整合代碼存取安全性
CLR 整合程式設計模型限制
建立元件