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 hébergé dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de 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 :
Assembly AssemblyName des frameworks .Net que vous inscrivez n’est pas entièrement testé dans l’environnement hébergé par SQL Server.
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 LE CLR SQL Server.
Un assembly .NET Framework non testé peut quitter son processus hôte lorsqu’une condition critique telle qu’une condition de mémoire faible se produit. Vous pouvez utiliser l’assembly dans l’environnement hébergé par LE CLR SQL Server à votre propre risque. 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 particulier provoque des problèmes SQL Server, vous pouvez être invité à cesser d’utiliser l’assembly. En outre, vous pouvez être invité à arrêter l’utilisation de l’assembly temporairement lorsque CSS résout un problème SQL Server particulier s’il est 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 des instructions de machine non managé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 de machine générées à partir du code C++ natif.
Lorsque vous utilisez un assembly .NET Framework qui n’est 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
permet uniquement aux assemblys .NET Framework purs d’être inscrits. Si l’assembly ou tout 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, Level 16, State 1, Line 2
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.
Stub natif/en-tête PE non vérifiable.
Dans ce cas, vous ne pouvez pas utiliser l’assembly .NET Framework avec SQL CLR, sauf si l’assembly se trouve 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, vous pouvez avoir une situation dans laquelle 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 inscrits à 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 :
L’assembly dans le magasin hôte a une signature différente de celle de l’assembly dans le GAC. (Exception de HRESULT : 0x80131050)
Assemblys pris en charge dans un environnement hébergé par LE CLR SQL Server
Les assemblys .NET Framework suivants sont pris en charge dans un environnement hébergé par LE CLR 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