跳转到内容

SQL CLR

维基百科,自由的百科全书

这是本页的一个历史版本,由小朱留言 | 贡献2008年10月15日 (三) 16:00编辑。这可能和当前版本存在着巨大的差异。

SQL CLR (SQL Common Language Runtime) 是自 SQL Server 2005 才出現的新功能,它將.NET Framework中的CLR服務注入到 SQL Server 中,讓 SQL Server 的部份資料庫物件可以使用 .NET Framework 的程式語言開發 (目前只支援VB.NETC#),包括預存程序使用者自訂函數觸發程序使用者自訂型別以及使用者自訂彙總函數等功能。

架構

SQL CLR 是利用 .NET Framework 中的 Hosting (裝載) 特性所實作的版本,這個功能讓 SQL Server 中可以安裝 .NET Framework 的組件,經由實作 ADO.NET 2.0 中所開放的 Microsoft.SqlServer.Server 命名空間中的.NET中介資料,來獲得 SQL Server 資料庫物件的能力:

  • 預存程序:SqlProcedureAttribute。
  • 使用者函數:SqlFunctionAttribute。
  • 觸發程序:SqlTriggerAttribute。
  • 使用者自訂彙總:SqlUserDefinedAggregate。
  • 使用者自訂型別:SqlUserDefinedType。

SQL CLR 的組件在發展完成後,需要使用 CREATE ASSEMBLY 指令將組件安裝到 SQL Server 中,然後使用相對應的 DDL 指令將組件中開放的函數引入資料庫物件中,才能在 SQL 指令中叫用。

安全性

對於 SQL Server 來說,SQL CLR 組件是一種外部程式碼,所以在 SQL Server 預設的安裝組態中,SQL CLR 是被封鎖不可以使用的,若要使用它,必須要先將它打開:

EXEC p_configure 'clr enabled', 1;

而對於 SQL CLR 組件本身,