共用方式為


建立 CLR 函數

您可以在 SQL Server 的執行個體內部建立資料庫物件,這些物件透過使用 Microsoft .NET Framework Common Language Runtime (CLR) 建立的組件來撰寫。可以利用 Common Language Runtime 所提供的豐富程式設計模型的資料庫物件,包含彙總函式、函數、預存程序、觸發程序以及類型。

在 SQL Server 中建立 CLR 函數包含下列步驟:

  • 以 .NET Framework 支援的語言,將函數定義成類別的靜態方法。如需如何以 Common Language Runtime 設計函數的詳細資訊,請參閱<CLR 使用者定義函數>。然後,使用適當的語言編譯器編譯類別,在 .NET Framework 中建立組件。

  • 使用 CREATE ASSEMBLY 陳述式在 SQL Server 中登錄組件。如需有關 SQL Server 中組件的詳細資訊,請參閱<組件 (Database Engine)>。

  • 使用 CREATE FUNCTION 陳述式參考註冊組件的函數。

[!附註]

在 Microsoft Visual Studio 中部署 SQL Server 專案,便會在已指定給專案的資料庫中註冊組件。部署專案也會在資料庫中,為所有以 SqlFunction 屬性註解的方法建立 CLR 函數。如需詳細資訊,請參閱<部署 CLR 資料庫物件>。

[!附註]

SQL Server 執行 CLR 程式碼的功能預設為關閉。您可以建立、改變和卸除參考 Managed 程式碼模組的資料庫物件,但是除非使用 sp_configure (Transact-SQL) 啟用 clr enabled 選項,否則這些參考在 SQL Server 中不會執行。

存取外部資源

CLR 函數可用以存取外部資源,例如,檔案、網路資源、Web Service、其他資料庫 (包含 SQL Server 的遠端執行個體)。這可透過使用 .NET Framework 中的各種類別來達成,例如 System.IO、System.WebServices、System.Sql 等等。包含這類函數的組件應該至少使用 EXTERNAL_ACCESS 權限來設定才能達成此目的。如需詳細資訊,請參閱<CREATE ASSEMBLY (Transact-SQL)>。SQL Client Managed Provider 可用以存取 SQL Server 的遠端執行個體。不過,在 CLR 函數中不支援回送連接到原始伺服器。

若要建立、修改或卸除 SQL Server 中的組件

若要建立 CLR 函數

存取機器碼

CLR 函數可用來透過 Managed 程式碼中的 PInvoke 存取機器碼 (Unmanaged 程式碼),例如使用 C 或 C++ 撰寫的程式碼 (如需詳細資訊,請參閱從 Managed 程式碼呼叫原生函式)。如此可讓您重複使用舊版程式碼 (如 CLR UDF) 或是使用機器碼撰寫關鍵效能 UDF。這樣的處理方式需要 UNSAFE 組件。如需了解使用 UNSAFE 組件的注意事項,請參閱<CLR 整合程式碼存取安全性>。