Stratégie de prise en charge des assemblys .NET Framework non testés dans l’environnement hébergé par le CLR SQL Server

Cet article décrit la stratégie de prise en charge des assemblys Microsoft .NET Framework non testés dans l’environnement clr (Common Language Runtime) .NET Framework dans SQL Server.

Version du produit d’origine : SQL Server
Numéro de la base de connaissances d’origine : 922672

Test et prise en charge des assemblys

Lorsque vous inscrivez un assembly qui fait référence à un assembly .NET Framework non testé dans SQL Server, vous pouvez recevoir le message d’avertissement suivant :

L’assembly .Net frameworks AssemblyName que vous inscrivez n’est pas entièrement testé dans SQL Server environnement hébergé.

Le message signifie que l’assembly .NET Framework n’a pas été testé dans l’environnement hébergé par le CLR SQL Server. Par conséquent, l’assembly n’est pas pris en charge dans l’environnement hébergé par SQL Server CLR.

Un assembly .NET Framework non testé peut quitter son processus hôte lorsqu’une condition critique telle que la mémoire insuffisante se produit. Vous pouvez utiliser l’assembly dans l’environnement hébergé par le CLR SQL Server à vos propres risques. Toutefois, SQL Server services de support technique (CSS) ne vous aidera pas à utiliser et à résoudre les problèmes associés à un assembly .NET Framework non pris en charge. Si CSS détermine qu’un assembly particulier non pris en charge provoque des problèmes SQL Server, vous pouvez être invité à arrêter d’utiliser l’assembly. En outre, vous pouvez être invité à arrêter temporairement d’utiliser l’assembly lorsque CSS résout un problème de SQL Server particulier si nécessaire.

Inscription d’assembly

Il existe deux types d’assemblys .NET : purs et mixtes. Les assemblys .NET purs contiennent uniquement des instructions MSIL. Les assemblys mixtes contiennent à la fois des instructions de machine non managées et des instructions MSIL. En général, les assemblys mixtes sont compilés dans un compilateur C++ à l’aide du commutateur « clr » et contiennent également des instructions de machine générées à partir de code C++ natif.

Lorsque vous utilisez un assembly .NET Framework qui ne figure pas dans la liste prise en charge, vous devez utiliser l’instruction CREATE ASSEMBLY pour inscrire l’assembly et les assemblys référencés dans SQL Server base de données. L’instruction SQL Server CREATE ASSEMBLY permet d’inscrire uniquement les assemblys .NET Framework purs. Si l’assembly ou un assembly référencé n’est pas un assembly .NET Framework pur (et, par conséquent, s’il s’agit d’un assembly mixte), vous recevez le message d’erreur suivant :

Message 6544, niveau 16, état 1, ligne 2
L’assembly CREATE ASSEMBLY pour l’assembly '<nom> de l’assembly' a échoué, car l’assembly '<nom> de l’assembly' est incorrect ou n’est pas un assembly .NET pur.
En-tête PE non vérifiable/stub natif.

Dans ce cas, vous ne pouvez pas utiliser l’assembly .NET Framework avec SQL CLR, sauf si l’assembly figure dans la liste prise en charge documentée dans cet article. En outre, un assembly .NET Framework peut passer d’un assembly pur à un assembly mixte entre les versions. Si vous utilisez un assembly qui n’est pas dans la liste prise en charge, il se peut que l’assembly fonctionne dans une version du .NET Framework, mais pas dans une autre. Cette restriction ne s’applique pas aux assemblys de la liste prise en charge, car ces assemblys ne doivent pas être enregistrés à l’aide de l’instruction CREATE ASSEMBLY .

En outre, vous devez gérer ces assemblys après la mise à niveau du .NET Framework. Le message d’erreur suivant s’affiche lorsque vous exécutez une routine CLR ou utilisez un assembly dans SQL Server :

La signature de l’assembly dans le magasin hôte est différente de celle de l’assembly dans gac. (Exception de HRESULT : 0x80131050)

Assemblys pris en charge dans un environnement hébergé par SQL Server CLR

Les assemblys .NET Framework suivants sont pris en charge dans un environnement hébergé par SQL Server CLR :

  • 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