通用語言執行平台整合

適用於:SQL ServerAzure SQL 受控執行個體

Microsoft SQL Server和Azure SQL 受控執行個體可讓您使用原生 Common Language Runtime (CLR) 整合,實作 .NET 語言的一些功能,SQL Server伺服器端模組 (程式、函式和觸發程式) 。 CLR 提供含有如跨語言整合、程式碼存取安全性、物件存留期間管理,以及偵錯和設定檔作業支援的 Managed 程式碼。 對於SQL Server使用者和應用程式開發人員而言,CLR 整合表示您現在可以撰寫預存程式、觸發程式、使用者定義型別、使用者定義函數 (純量和資料表值) ,以及使用任何.NET Framework語言的使用者定義彙總函式,包括 Microsoft Visual Basic .NET 和 Microsoft Visual C#。 SQL Server包含預先安裝.NET Framework版 4。

警告

CLR 使用 .NET Framework 中的程式碼存取安全性 (CAS),而這不再作為安全性界限受支援。 使用 PERMISSION_SET = SAFE 所建立的 CLR 組件可以存取外部系統資源、呼叫 Unmanaged 程式碼,以及取得系統管理員權限。 從 SQL Server 2017 (14.x) 開始,引進稱為 clr strict securitysp_configure 選項來增強 CLR 組件的安全性。 clr strict security 會依預設啟用,且將 SAFEEXTERNAL_ACCESS 組件視作已標記為 UNSAFE 一樣。 可以基於回溯相容性停用 clr strict security 選項,但不建議這麼做。 Microsoft 建議透過具有已獲授與 master 資料庫中 UNSAFE ASSEMBLY 權限之對應登入的憑證或非對稱金鑰簽署所有組件。 如需詳細資訊,請參閱 CLR 嚴格安全性。 SQL Server 管理員也可以將組件新增至資料庫引擎應信任的組件清單。 如需詳細資訊,請參閱 sys.sp_add_trusted_assembly

這段 6 分鐘的影片示範如何在 Azure SQL 受控執行個體 中使用 CLR:

使用 CLR 模組的時機

CLR 整合可讓您實作.NET Framework中可用的複雜功能,例如正則運算式、存取外部資源的程式碼 (伺服器、Web 服務、資料庫) 、自訂加密等。伺服器端 CLR 整合的一些優點包括:

  • 程式設計模型更好。 .NET Framework語言有許多方面比 Transact-SQL 更豐富,提供先前無法提供給SQL Server開發人員的建構和功能。 開發人員也可以運用提供一組廣大類別的 .NET Framework 程式庫功能,可用於快速而有效率地解決程式設計問題。

  • 可增進安全和安全性。 Managed 程式碼會在 Database Engine 主控的 Common Language Run-time 環境下執行。 SQL Server利用這項功能,為舊版SQL Server中可用的擴充預存程式提供更安全且更安全的替代方案。

  • 能夠定義資料類型和彙總函式。 使用者定義的類型和使用者定義匯總是兩個新的 Managed 資料庫物件,可擴充SQL Server的儲存體和查詢功能。

  • 透過標準化環境簡化的開發。 資料庫開發已整合到 Microsoft Visual Studio .NET 開發環境的未來版本中。 開發人員用來開發與偵錯資料庫物件和指令碼的工具,與他們用來撰寫中介層或用戶層的 .NET Framework 元件和服務的工具是一樣的。

  • 增進效能和延展性的可能性。 在許多情況下,.NET Framework 語言編譯和執行模型會透過 Transact-SQL 提供改善的效能。

SQL Server語言延伸模組會為接近資料庫引擎的執行時間提供替代的執行環境。 如需 SQL CLR 與 SQL 語言延伸模組之間差異的討論,請參閱比較 SQL Server 語言延伸模組與 SQL CLR

下表列出本節的主題。

CLR 整合的概觀
描述可使用 CLR 整合建置的物件種類。 也請檢閱使用 CLR 整合建置資料庫物件的需求。

CLR 整合的新功能
描述這個版本的新功能。

CLR 整合的架構
描述 CLR 整合的設計目標。

啟用 CLR 整合
說明如何啟用 CLR 整合。

另請參閱

安裝.NET Framework (SQL Server)
CLR 整合的效能