分享方式:


管理 CLR 整合元件

Applies to:SQL Server

Managed 程式代碼會編譯,然後部署在稱為 Common Language Runtime (CLR) 元件的單元中。 元件會封裝為 DLL 或可執行檔案 (.exe) 檔案。 雖然可執行檔可以自行執行,但 DLL 必須裝載於現有的應用程式中。 受控 DLL 元件可以載入 SQL Server 裝載並裝載。 SQL Server 要求您先使用 CREATE ASSEMBLY 語句在資料庫中註冊元件,才能載入進程並使用。 您也可以使用 ALTER ASSEMBLY 語句從較新版本更新元件,或使用 DROP ASSEMBLY 語句從 SQL Server 中移除。

元件資訊會儲存在安裝元件的資料庫中 sys.assembly_files 數據表中。 sys.assembly_files 資料表包含下列數據行。

Column Description
assembly_id 為元件定義的識別碼。 這個數位會指派給與相同元件相關的所有物件。
name 物件的名稱。
file_id 識別每個物件的數位,其中第一個物件與指定的 assembly_id 指定的值指定 1。 如果多個物件與相同的 assembly_id相關聯,則每個後續 file_id 值都會遞增 1。
content 元件或檔案的十六進位表示法。

在本節中

Article Description
建立元件 討論在 SQL Server 中建立 SAFEEXTERNAL_ACCESSUNSAFE CLR 元件
改變元件 描述在 SQL Server 中更新 CLR 元件
卸除元件 討論從 SQL Server 卸除 CLR 元件

不再支援程式碼存取安全性

CLR 使用 .NET Framework 的 Code Access Security (CAS) 機制,但不再作為安全界限受支援。 使用 PERMISSION_SET = SAFE 所建立的 CLR 組件可以存取外部系統資源、呼叫非受控程式碼,以及取得系統管理員權限。 在 SQL Server 2017 (14.x) 和更新版本中,sp_configure 選項可增強 CLR 組件的安全性。 clr strict security 會依預設啟用,且將 SAFEEXTERNAL_ACCESS 組件視作已標記為 UNSAFE 一樣。 可以基於回溯相容性而停用 clr strict security 選項,但不建議這麼做。

我們建議您使用憑證或非對稱金鑰,並通過具有在資料庫中被授予 UNSAFE ASSEMBLY 權限的對應登入來簽署所有組件。 SQL Server 系統管理員也可以將組件新增至資料庫引擎應該信任的組件清單。 For more information, see sys.sp_add_trusted_assembly.