分享方式:


伺服器組態:已啟用 clr

適用於:SQL Server

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

Description
0 SQL Server 上不允許的組件執行。
1 SQL Server 上允許的組件執行。

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

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

限制

輕量型共用不支援通用語言執行平台 (CLR) 的執行

停用兩個選項之一:clr enabledlightweight 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 嚴格安全性clr strict security 會依預設啟用,且將 SAFEEXTERNAL_ACCESS 組件視作已標記為 UNSAFE 一樣。 可以基於回溯相容性而停用 clr strict security 選項,但不建議這麼做。

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

範例

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

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