支援的 .NET Framework 程式庫

適用於:SQL Server

在 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 元件,請務必使用 ALTER ASSEMBLY 語句來服務或升級 SQL Server 資料庫 內的元件複本。 如需詳細資訊,請參閱 知識庫文章 949080

支援的程式庫

從 SQL Server 2005 (9.x) 開始,SQL Server 有一份支援的 .NET Framework 程式庫清單,這些程式庫已經過測試,以確保它們符合與 SQL Server 互動的可靠性和安全性標準。 支援的程式庫不需要在伺服器上明確註冊,才能在您的程式碼中使用;SQL Server 會直接從全域組件快取 (GAC) 載入它們。

SQL Server 中 CLR 整合所支援的程式庫/命名空間包括:

  • CustomMarshalers
  • Microsoft.VisualBasic
  • Microsoft.VisualC
  • mscorlib
  • 系統
  • System.Configuration
  • System.Core
  • System.Data
  • System.Data.OracleClient
  • System.Data.SqlXml
  • System.Deployment
  • System.Security
  • System.Transactions
  • System.Web.Services
  • System.Xml
  • System.Xml.Linq

不支援的程式庫

您仍然可以從受控預存程式、觸發程式、使用者定義函式、使用者定義型別和使用者定義匯總呼叫不支援的程式庫。 不支援的程式庫必須先使用 CREATE ASSEMBLY 語句在 SQL Server 資料庫中註冊,才能在您的程式碼中使用。 在伺服器上註冊並執行的任何不支援的程式庫,都應該檢閱及測試安全性和可靠性。

例如, 不支援 System.DirectoryServices 命名空間。 您必須先向 UNSAFE 許可權註冊 System.DirectoryServices.dll 元件,才能從程式碼呼叫它。 UNSAFE 許可權是必要的,因為 System.DirectoryServices 命名空間中的 類別不符合 SAFE EXTERNAL_ACCESS 的需求 。 如需詳細資訊,請參閱 CLR 整合程式設計模型限制 CLR 整合程式碼存取安全性

另請參閱

建立元件
CLR 整合代碼存取安全性
CLR 整合程式設計模型限制