支援的 .NET Framework 程式庫
利用 SQL Server 中裝載的 Common Language Runtime (CLR),您能夠以 Managed 程式碼撰寫預存程序、觸發程序、使用者定義函數、使用者定義型別及使用者定義彙總。藉由 .NET Framework 類別庫所提供的功能,您可以存取預先建立的類別,這些類別可提供字串操作、進階數學運算、檔案存取、加密等多項功能。您可以透過任何 Managed 預存程序、使用者定義型別、觸發程序、使用者定義函數或使用者定義彙總來存取這些類別。
[!附註]
如果在全域組件快取 (GAC) 中服務或升級不受支援的組件,則 SQL Server 應用程式可能會停止運作。這是因為 GAC 中的服務或升級程式庫不會升級 SQL Server 內的這些組件。如果某個組件同時存在 SQL Server 資料庫和 GAC 中,這個組件的兩個副本就必須完全相符。如果它們不相符,當 SQL Server CLR 整合使用該組件時,將會發生錯誤。如果您在 GAC 中服務或升級的組件也已在資料庫中註冊 (包括不支援的 .NET Framework 組件),務必同時在您的 SQL Server 資料庫中藉由 ALTER ASSEMBLY 陳述式來服務或升級該組件的副本。如需詳細資訊,請參閱知識庫文件 949080 (機器翻譯) (https://go.microsoft.com/fwlink/?LinkID=154563)。
支援的程式庫
從 SQL Server 2005 開始,SQL Server 就具備受支援的 .NET Framework 程式庫清單,這些程式庫均經過測試,以確保符合與 SQL Server 互動的可靠性和安全性標準。受支援的程式庫不需要在伺服器上明確地註冊,即可用於程式碼內,SQL Server 會從全域組件快取 (GAC) 直接載入這些程式庫。
SQL Server 中的 CLR 整合所支援的程式庫/命名空間是:
CustomMarshalers
Microsoft.VisualBasic
Microsoft.VisualC
mscorlib
System
System.Configuration
System.Data
System.Data.OracleClient
System.Data.SqlXml
System.Deployment
System.Security
System.Transactions
System.Web.Services
System.Xml
System.Core.dll
System.Xml.Linq.dll
不支援的程式庫
不支援的程式庫仍可以從 Managed 預存程序、觸發程序、使用者定義函數、使用者定義型別和使用者定義彙總加以呼叫。您必須先使用 CREATE ASSEMBLY 陳述式在 SQL Server 資料庫中註冊不支援的程式庫,才能在程式碼中使用該程式庫。為了確保安全性和可靠性,任何在伺服器上註冊及執行的不支援程式庫都應該經過檢閱和測試。
例如,System.DirectoryServices 命名空間並不受支援。您必須使用 UNSAFE 權限註冊 System.DirectoryServices.dll 組件,才能從程式碼中加以呼叫。UNSAFE 權限是必要的,因為 System.DirectoryServices 命名空間中的類別並不符合 SAFE 或 EXTERNAL_ACCESS 的需求。如需詳細資訊,請參閱<CLR 整合程式設計模型限制>和<CLR 整合程式碼存取安全性>。