伺服器組態:已啟用 clr

適用於:SQL Server

使用 clr enabled 選項來指定 SQL Server 是否可執行使用者組件。 clr enabled 選項提供下列值:

值 描述
0 SQL Server 上不允許的組件執行。
1 允許在 SQL Server 上執行組件。

僅針對 WOW64:重新啟動 WOW64 伺服器以套用這些變更。 對於其他伺服器類型,則不需要重新啟動。

當您執行 RECONFIGURE 且 clr enabled 選項的執行值從 1 變更為 0 時,會立即卸載包含使用者組件的所有應用程式定義域。

限制

在輕量型集區下,不支援通用語言執行階段 (CLR) 的執行

停用兩個選項之一:clr enabled 或 lightweight pooling。 依賴 CLR 且在 Fiber 模式下無法正常運作的功能包括了 hierarchyid 資料類型、FORMAT 功能、複寫和原則式管理。 如需詳細資訊,請參閱 [輕量型共用伺服器組態選項]。

雖然 Azure SQL Database 中已啟用 clr enabled 設定選項,但 Azure SQL 資料庫中不支援開發 CLR 使用者函數。

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

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

我們建議您使用憑證或非對稱金鑰來簽署所有組件,並使用其對應的登入;該登入在 master 資料庫中已被授與 UNSAFE ASSEMBLY 權限。 SQL Server 系統管理員也可以將組件新增至資料庫引擎應該信任的組件清單。 如需詳細資訊,請參閱 sys.sp_add_trusted_assembly。

範例

下列範例會先顯示 clr enabled 選項的目前設定,然後將選項值設定為 1 來啟用選項。 若要停用此選項,請將值設定為 0。

EXECUTE sp_configure 'clr enabled';
EXECUTE sp_configure 'clr enabled', '1';
RECONFIGURE;