建立 CLR 函數
適用於: SQL Server 2016 (13.x) 和更新版本
您可以在 SQL Server 實例中建立一個資料庫物件,該物件是在 .NET Framework 通用語言執行環境 (CLR) 中撰寫的組件。 可以使用 Common Language Runtime 所提供的豐富程式設計模型的資料庫物件,包含彙總函式、函數、預存程序、觸發程序以及類型。
在 SQL Server 中建立 CLR 函數包含下列步驟:
以 .NET Framework 支援的語言,將函數定義成類別的靜態方法。 如需如何在 Common Language Runtime 中設計函式的詳細資訊,請參閱
CLR 使用者定義函式。 然後,使用適當的語言編譯器編譯類別,在 .NET Framework 中建立組件。 透過
CREATE ASSEMBLY
語句在 SQL Server 中註冊元件。 如需 SQL Server 中組件的詳細資訊,請參閱組件 (資料庫引擎) (機器翻譯)。使用 CREATE FUNCTION 陳述式建立參考已註冊組件的函數。
在 SQL Server 中,執行 CLR 程式碼的功能預設為關閉。 您可以建立、變更及刪除資料庫物件,這些物件是參考受控代碼模組。但這些參考不會在 SQL Server 中執行,除非使用 sp_configure啟用了 clr 伺服器設定選項。
在 Visual Studio 中部署 SQL Server 專案會在針對專案指定的資料庫中註冊元件。 部署專案也會針對以 SqlFunction
屬性標註的所有方法,在資料庫中建立CLR函式。 如需詳細資訊,請參閱 部署CLR資料庫物件。
存取外部資源
您可以使用 CLR 函式來存取外部資源,例如檔案、網路資源、Web 服務和其他資料庫(包括 SQL Server 的遠端實例)。 CLR 函式可以在 .NET Framework 中使用各種類別,例如 System.IO
、System.WebServices
、System.Sql
等等。 包含這類函式的元件至少應該使用為此用途的 EXTERNAL_ACCESS
許可權集來設定。 如需詳細資訊,請參閱 CREATE ASSEMBLY。
SQL 用戶端受控提供者可用以存取 SQL Server 的遠端執行個體。 不過,CLR 函數不支援連至原始伺服器的回送連線。
在 SQL Server 中建立、修改或卸除元件
建立 CLR 函式
存取機器碼
CLR 函數可透過 PInvoke
從受控程式碼中存取機器碼 (未受控的程式碼),例如以 C 或 C++ 撰寫的程式碼 (如需詳細資訊,請參閱從受控程式碼呼叫原生函數)。 您可以將舊版程式碼重複使用為 CLR UDF,或以機器碼撰寫效能關鍵的 UDF,並且需要使用 UNSAFE
組件。 請參閱 CLR 整合程式代碼存取安全性,以了解使用 UNSAFE
元件的注意事項。