共用方式為


Common Language Runtime (CLR) 整合

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

SQL Server 和 Azure SQL 受控執行個體 可讓您使用原生通用語言執行平臺 (CLR) 整合來實作 .NET 語言的一些功能,做為 SQL Server 伺服器端模組(程式、函式和觸發程式)。 CLR 提供含有如跨語言整合、程式碼存取安全性、物件存留期間管理,以及偵錯和設定檔作業支援的 Managed 程式碼。

針對 SQL Server 使用者和應用程式開發人員,CLR 整合表示您可以撰寫預存程式、觸發程式、使用者定義型別、使用者定義函數(純量和數據表值),以及使用任何 .NET Framework 語言的使用者定義聚合函數,包括 Visual Basic .NET 和 Visual C#。 SQL Server 包含預安裝 .NET Framework 第 4 版。

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

不再支援程式碼存取安全性

CLR 使用 .NET Framework 中的程式碼存取安全性 (CAS),而這不再作為安全性界限受支援。 使用 PERMISSION_SET = SAFE 所建立的 CLR 組件可以存取外部系統資源、呼叫非受控程式碼,以及取得系統管理員權限。 在 SQL Server 2017 (14.x) 和更新版本中,sp_configure 安全性選項可增強 CLR 嚴格安全性clr strict security 會依預設啟用,且將 SAFEEXTERNAL_ACCESS 組件視作已標記為 UNSAFE 一樣。 可以基於回溯相容性而停用 clr strict security 選項,但不建議這麼做。

我們建議透過具有已獲授與資料庫中 UNSAFE ASSEMBLY權限master 之對應登入的憑證或非對稱金鑰簽署所有組件。 SQL Server 系統管理員也可以將組件新增至資料庫引擎應該信任的組件清單。 如需詳細資訊,請參閱 sys.sp_add_trusted_assembly

使用 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 整合 描述如何啟用 CLR 整合。