建立 CLR 函數

您可以在 SQL Server 執行個體中建立資料庫物件,這些物件是透過 Microsoft .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 陳述式建立參考已註冊組件的函數。

注意

在 MicrosoftVisual Studio 中部署SQL Server專案,會在為專案指定的資料庫中註冊元件。 部署專案也會在資料庫中,為所有以 SqlFunction 屬性註解的方法建立 CLR 函數。 如需詳細資訊,請參閱 Deploying CLR Database Objects

注意

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

存取外部資源

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

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

若要建立 CLR 函數

存取機器碼

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

另請參閱

建立使用者定義函式 (資料庫引擎)
建立使用者定義彙總
執行使用者定義函數
檢視使用者定義函數
Common Language Runtime (CLR) 整合程式設計概念