共用方式為


通用語言執行平台整合

適用於:SQL Server Azure SQL 受控執行個體

Microsoft SQL Server 和 Azure SQL 受控執行個體 可讓您使用原生通用語言執行平臺 (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 程式代碼會在由 資料庫引擎 所裝載的通用語言運行時間環境中執行。 SQL Server 會利用這項功能,為舊版 SQL Server 中可用的擴充預存程式提供更安全且更安全的替代方案。

  • 能夠定義數據類型和聚合函數。 使用者定義的類型和使用者定義匯總是兩個新的 Managed 資料庫物件,可擴充 SQL Server 的記憶體和查詢功能。

  • 透過標準化環境簡化開發。 資料庫開發已整合到 Visual Studio .NET 開發環境Microsoft的未來版本。 開發人員會使用相同的工具來開發和偵錯資料庫對象和腳本,因為它們用來撰寫仲介層或用戶端層 .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 整合的效能