當使用 CREATE ASSEMBLY 將組件載入資料庫時,SQL Server 2005 提供三種權限集:
這些權限集對應不同的 AppDomain 原則層級,決定程式碼能存取的資源範圍。
CREATE ASSEMBLY FileAccess
FROM 'E:\FileLoader.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS;
GO
最嚴格的層級,僅允許:
context connection=true) 存取裝載 SQL Server 執行個體內的資料與物件。授予的 CAS 權限僅包含 SecurityPermission (Execution) 與受限的 SqlClientPermission (僅允許內容連接、不可空密碼)。
允許存取外部資源,如:
部署時需資料庫擁有者 (DBO) 擁有 EXTERNAL ACCESS ASSEMBLY 權限,且資料庫設定 TRUSTWORTHY ON 或組件以強式名稱/憑證簽署並建立對應登入授權。
最高權限,允許呼叫非受控程式碼、操作執行緒、存取記憶體指標等高風險操作。僅限 sysadmin 固定伺服器角色成員部署,極度謹慎使用。
TRUSTWORTHY。