您可以在 SQL Server 實例內建立資料庫物件,該物件是使用在 Microsoft .NET Framework 公用語言執行階段 (CLR) 中建立的組件來撰寫。 可以利用 Common Language Runtime 所提供的豐富程式設計模型的資料庫物件包括聚合函數、函式、預存程式、觸發程式和類型。
在 SQL Server 中建立 CLR 函數包含下列步驟:
以 .NET Framework 支援的語言,將函數定義成類別的靜態方法。 如需如何在 Common Language Runtime 中程式設計函式的詳細資訊,請參閱 CLR User-Defined Functions。 然後,使用適當的語言編譯器編譯類別,在 .NET Framework 中建立組件。
使用 CREATE ASSEMBLY 語句在 SQL Server 中註冊元件。 如需 SQL Server 中組件的詳細資訊,請參閱組件 (資料庫引擎) (機器翻譯)。
使用 CREATE FUNCTION 陳述式建立參考已註冊組件的函數。
備註
在 MicrosoftVisual Studio 中部署 SQL Server 專案會在為專案指定的資料庫中註冊元件。 部署專案也會針對以 SqlFunction 屬性標註的所有方法,在資料庫中建立CLR函式。 如需詳細資訊,請參閱 部署CLR資料庫物件。
備註
SQL Server 執行 CLR 程式代碼的能力預設為關閉。 您可以建立、變更及刪除參考受管理代碼模組的資料庫對象,但除非使用 sp_configure (Transact-SQL) 啟用 CLR 選項,否則這些參考將不會在 SQL Server 中執行。
存取外部資源
CLR 函式可用來存取外部資源,例如檔案、網路資源、Web 服務、其他資料庫(包括 SQL Server 的遠端實例)。 這可以透過在 .NET Framework 中使用各種類別來達成,例如 System.IO、 System.WebServices、 System.Sql等等。 包含此類函式的元件,至少應該設定為具有 EXTERNAL_ACCESS 許可權集,以達到此目的。 如需詳細資訊,請參閱 CREATE ASSEMBLY (Transact-SQL) 。 SQL 用戶端受控提供者可用以存取 SQL Server 的遠端執行個體。 不過,CLR 函式不支援對源伺服器的回送連線。
在 SQL Server 中建立、修改或卸除元件
建立 CLR 函式
存取原生程式碼
CLR 函數可用來存取原生(非受管)程式碼,例如以 C 或 C++ 撰寫的程式代碼,透過從受管程式碼使用 PInvoke(如需詳細資訊,請參閱 從受管程式碼呼叫原生函數)。 這可讓您重複使用舊版程式碼作為 CLR UDF,或以原生程式碼撰寫效能關鍵的 UDF。 這需要使用 UNSAFE 元件。 如需使用 UNSAFE 元件的注意事項,請參閱 CLR 整合程式代碼存取安全性 。
另請參閱
建立使用者定義函式 (Database Engine)
建立使用者定義的匯總
執行使用者定義函式
檢視使用者定義函式
Common Language Runtime (CLR) 整合程式設計概念