建立 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.IO
、 System.WebServices
、System.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) 整合程式設計概念