Condividi tramite


Criteri di supporto per assembly .NET Framework non verificati nell'ambiente ospitato in CLR di SQL Server

Questo articolo descrive i criteri di supporto per gli assembly di Microsoft .NET Framework non verificati nell'ambiente ospitato in .NET Framework Common Language Runtime (CLR) in SQL Server.

Versione originale del prodotto: SQL Server
Numero KB originale: 922672

Test e supporto degli assembly

Quando si registra un assembly che fa riferimento a un assembly .NET Framework non testato in SQL Server, è possibile che venga visualizzato il messaggio di avviso seguente:

AssemblyName assembly .Net Frameworks che si sta registrando non è completamente testato nell'ambiente ospitato di SQL Server.

Il messaggio indica che l'assembly .NET Framework non è stato testato nell'ambiente ospitato in CLR di SQL Server. Pertanto, l'assembly non è supportato nell'ambiente ospitato da CLR di SQL Server.

Un assembly .NET Framework non testato può uscire dal processo host quando si verifica una condizione critica, ad esempio una condizione di memoria insufficiente. È possibile usare l'assembly nell'ambiente ospitato in CLR di SQL Server a proprio rischio. Tuttavia, SQL Server Customer Support Services (CSS) non consente di usare e risolvere i problemi associati a un assembly .NET Framework non supportato. Se CSS determina che un particolare assembly non supportato causa problemi di SQL Server, potrebbe essere richiesto di interrompere l'uso dell'assembly. Inoltre, potrebbe essere richiesto di interrompere temporaneamente l'uso dell'assembly quando CSS risolve un problema specifico di SQL Server, se necessario.

Registrazione dell'assembly

Esistono due tipi di assembly .NET: pure e misti. Gli assembly .NET puri contengono solo istruzioni MSIL. Gli assembly misti contengono sia istruzioni di computer non gestite che istruzioni MSIL. Gli assembly misti in generale vengono compilati in un compilatore C++ usando l'opzione "clr" e contengono anche istruzioni sul computer compilate da codice C++ nativo.

Quando si usa un assembly .NET Framework che non è incluso nell'elenco supportato, è necessario usare l'istruzione CREATE ASSEMBLY per registrare l'assembly e gli assembly a cui si fa riferimento all'interno del database di SQL Server. L'istruzione SQL Server CREATE ASSEMBLY consente solo la registrazione di assembly .NET Framework puri. Se l'assembly o qualsiasi assembly a cui si fa riferimento non è un assembly .NET Framework puro (e pertanto è un assembly misto), viene visualizzato il messaggio di errore seguente:

Messaggio 6544, livello 16, stato 1, riga 2
L'assembly CREATE per l'assembly '<nome assembly>' non è riuscito perché l'assembly '<nome> assembly' non è valido o non è un assembly .NET puro.
Intestazione PE/stub nativo non verificabile.

In questo caso, non è possibile usare l'assembly .NET Framework insieme a SQL CLR, a meno che l'assembly non si trovi nell'elenco supportato documentato in questo articolo. Inoltre, un assembly .NET Framework può passare da un assembly puro a un assembly misto tra versioni. Se si usa un assembly non incluso nell'elenco supportato, potrebbe verificarsi una situazione in cui l'assembly funziona in una versione di .NET Framework ma non in un'altra. Questa restrizione non si applica agli assembly nell'elenco supportato perché questi assembly non devono essere registrati tramite l'istruzione CREATE ASSEMBLY .

Inoltre, è necessario gestire questi assembly dopo l'aggiornamento di .NET Framework. Quando si esegue una routine CLR o si usa un assembly in SQL Server, viene visualizzato il messaggio di errore seguente:

L'assembly nell'archivio host ha una firma diversa dall'assembly nella GAC. (Eccezione da HRESULT: 0x80131050)

Assembly supportati in un ambiente ospitato in CLR di SQL Server

Gli assembly .NET Framework seguenti sono supportati in un ambiente ospitato in CLR di SQL Server:

  • 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