SQL Server CLR 裝載環境中未測試 .NET Framework元件的支持原則

本文說明在 SQL Server 中,.NET Framework Common Language Runtime (CLR) 裝載環境中未經測試的 Microsoft .NET Framework 元件的支持原則。

原始產品版本: SQL S
原始 KB 編號: 922672

元件測試和支援

當您在 SQL Server 中註冊參考未經測試 .NET Framework 元件的元件時,可能會收到下列警告訊息:

您要註冊的 .Net Framework 元件 AssemblyName 未在 SQL Server 裝載的環境中進行完整測試。

訊息表示 .NET Framework元件尚未在 SQL Server CLR 裝載的環境中進行測試。 因此,SQL Server CLR 裝載環境中不支援元件。

發生低記憶體條件等重大狀況時,未經測試的 .NET Framework元件可能會結束其主機進程。 您可以在 SQL Server CLR 裝載的環境中使用元件,風險為您。 不過,SQL Server 客戶支援服務 (CSS) 將無法協助您使用和疑難解答與不支援 .NET Framework元件相關聯的問題。 如果 CSS 判斷特定不支援的元件造成 SQL Server 問題,系統可能會要求您停止使用元件。 此外,當 CSS 視需要針對特定 SQL Server 問題進行疑難解答時,可能會要求您暫時停止使用元件。

元件註冊

.NET 元件有兩種:純和混合。 純 .NET 元件只包含 MSIL 指示。 混合元件同時包含 Unmanaged 機器指示和 MSIL 指示。 混合元件一般會使用 「clr」 參數在 C++ 編譯程式中編譯,而且也包含從原生 C++ 程式代碼建置的機器指示。

當您使用不在支援清單中的 .NET Framework元件時,您必須使用 CREATE ASSEMBLY 語句來註冊 SQL Server 資料庫內的元件和參考的元件。 CREATE ASSEMBLY SQL Server 語句只允許註冊純 .NET Framework元件。 如果元件或任何參考的元件不是純 .NET Framework元件 (,因此是混合元件) ,您會收到下列錯誤訊息:

Msg 6544, Level 16, State 1, Line 2
元件 '<assembly name>' 的 CREATE ASSEMBLY 失敗,因為元件 '<assembly name>' 格式不正確或不是純 .NET 元件。
無法驗證的PE標頭/原生存根。

在此情況下,除非元件位於本文所記載的支援清單中,否則您無法將 .NET Framework元件與 SQL CLR 搭配使用。 此外,.NET Framework元件可以從單純元件變更為版本之間的混合元件。 如果您使用的元件不在支援的清單中,您可能會遇到元件在某個版本的 .NET Framework 中運作,但在另一個版本中無法運作的情況。 這項限制不適用於支援清單中的元件,因為不需要使用 CREATE ASSEMBLY 語句來註冊這些元件。

此外,您必須在升級 .NET Framework 之後維護這些元件。 當您執行 CLR 例程或在 SQL Server 中使用元件時,會顯示下列錯誤訊息:

主機存放區中的元件簽章與 GAC 中的元件不同。 (來自 HRESULT 的例外狀況:0x80131050)

SQL Server CLR 裝載環境中支援的元件

SQL Server CLR 裝載環境中支援下列 .NET Framework元件:

  • Microsoft.VisualBasic.dll

  • Mscorlib.dll

  • System.Data.dll

  • System.dll

  • System.Xml.dll

  • Microsoft.VisualC.dll

  • CustomMarshalers.dll

  • System.Security.dll

  • System.Web.Services.dll

  • System.Data.SqlXml.dll

  • System.Transactions.dll

  • System.Data.OracleClient.dll

  • System.Configuration.dll