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
會依預設啟用,且將 SAFE
與 EXTERNAL_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 整合。 |