Stratégie de prise en charge pour les 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 pour les assemblys Microsoft .NET Framework non testés dans l’environnement .NET Framework hébergé par Common Language Runtime (CLR) dans SQL Server.

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

Test et prise en charge d’assembly

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 :

Avertissement

L’assembly AssemblyName de .NET Framework que vous inscrivez n’est pas entièrement testé dans un environnement hébergé SQL Server.

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

Un assembly .NET Framework non testé peut quitter son processus hôte lorsqu’une condition critique telle qu’une condition de mémoire insuffisante se produit. Vous pouvez utiliser l’assembly dans l’environnement hébergé par le CLR SQL Server à vos propres risques. Toutefois, les services de support technique SQL Server (CSS) ne vous aideront 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 non pris en charge provoque des problèmes SQL Server, il se peut que vous soyez invité à arrêter l’utilisation de l’assembly. En outre, il se peut que vous soyez invité à arrêter temporairement l’utilisation de l’assembly lorsque CSS diagnostique un problème SQL Server particulier si nécessaire.

Inscription d’assembly

Il existe deux types d’assembly .NET : pure et mixed. Les assemblys .NET purs contiennent uniquement des instructions MSIL. Les assemblys mixtes contiennent à la fois des instructions machine non gérées et des instructions MSIL. Les assemblys mixtes en général sont compilés dans un compilateur C++ à l’aide du commutateur « CLR » et contiennent également des instructions 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 la base de données SQL Server. L’instruction SQL Server CREATe ASSEMBLy ne permet d’enregistrer que des 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, est un assembly mixte), vous recevez le message d’erreur suivant : 

MSG 6544, niveau 16, état 1, ligne 2
La création de l’ASSEMBLy pour l’assembly' <assembly name> 'a échoué, car l’assembly' <assembly name> 'est incorrect ou n’est pas un assembly .net pur.
En-tête/stub Native PE non vérifiable.

Dans ce cas, vous ne pouvez pas utiliser l’assembly .NET Framework avec le CLR SQL, sauf si l’assembly se trouve dans la liste prise en charge décrite 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, vous pouvez rencontrer une situation dans laquelle l’assembly fonctionne dans une version de .NET Framework, mais pas dans une autre. Cette restriction ne s’applique pas aux assemblys de la liste prise en charge, car il n’est pas nécessaire que ces assemblys soient enregistrés à l’aide de l’instruction CREATe ASSEMBLy.

En outre, vous devez gérer ces assemblys après avoir effectué une mise à niveau de .NET Framework. Message d’erreur lorsque vous exécutez une routine CLR ou que vous utilisez un assembly dans SQL Server :

L’assembly dans le magasin hôte a une signature différente de celle de l’assembly dans le GAC. (Exception à partir de HRESULT : 0x80131050)

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

Les assemblys .NET Framework suivants sont pris en charge dans un environnement SQL Server hébergé par le 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