SQL Server CLR 裝載環境中的未測試 .NET Framework 元件支持原則
本文說明 SQL Server 中 .NET Framework Common Language Runtime (CLR)裝載環境的未測試Microsoft .NET Framework 元件的支持原則。
原始產品版本:SQL Server
原始 KB 編號: 922672
元件測試和支援
當您在 SQL Server 中註冊參考未測試 .NET Framework 元件的元件時,您可能會收到下列警告訊息:
您註冊的 .Net frameworks 元件 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 資料庫中的元件和參考的元件。 SQL Server CREATE ASSEMBLY
語句只允許註冊純 .NET Framework 元件。 如果元件或任何參考的元件不是純 .NET Framework 元件(因此是混合元件),您會收到下列錯誤訊息:
訊息 6544,層級 16,狀態 1,第 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