Directiva de compatibilidad para ensamblados de .NET Framework no probados en el entorno hospedado en CLR de SQL Server

En este artículo se describe la Directiva de compatibilidad para los ensamblados de Microsoft .NET Framework no probados en el entorno hospedado en Common Language Runtime (CLR) de .NET Framework en SQL Server.

Versión del producto original:   SQL Server
Número de KB original:   922672

Pruebas y soporte de ensamblado

Al registrar un ensamblado que hace referencia a un ensamblado de .NET Framework no probado en SQL Server, es posible que reciba el siguiente mensaje de ADVERTENCIA:

Advertencia

El AssemblyName de ensamblado de .NET Framework que está registrando no se ha probado completamente en el entorno hospedado de SQL Server.

El mensaje significa que el ensamblado de .NET Framework no se ha probado en el entorno hospedado en CLR de SQL Server. Por lo tanto, el ensamblado no es compatible con el entorno hospedado en CLR de SQL Server.

Un ensamblado de .NET Framework no probado puede salir de su proceso de host cuando se produce una condición crítica como una condición de memoria baja. Puede usar el ensamblado en el entorno hospedado por CLR de SQL Server bajo su propio riesgo. Sin embargo, los servicios de soporte al cliente (CSS) de SQL Server no le ayudarán a usar y solucionar problemas asociados a un ensamblado de .NET Framework no compatible. Si CSS determina que un ensamblado no compatible en particular causa problemas con SQL Server, es posible que se le pida que deje de usar el ensamblado. Además, es posible que se le pida que deje de usar el ensamblado temporalmente cuando CSS solucione un problema concreto de SQL Server si es necesario.

Registro de ensamblado

Hay dos tipos de ensamblados .NET: Pure y Mixed. Los ensamblados .NET puros solo contienen instrucciones MSIL. Los ensamblados mixtos contienen instrucciones máquina no administradas e instrucciones MSIL. En general, los ensamblados mixtos se compilan en un compilador de C++ mediante el modificador "CLR" y también contienen instrucciones máquina creadas a partir de código C++ nativo.

Cuando se usa un ensamblado de .NET Framework que no está en la lista admitida, se debe usar la instrucción CREATE ASSEMBLy para registrar el ensamblado y los ensamblados a los que se hace referencia en la base de datos de SQL Server. La instrucción CREATE ASSEMBLy de SQL Server sólo permite que se registren ensamblados de .NET Framework puros. Si el ensamblado o cualquier ensamblado al que se hace referencia no es un ensamblado de .NET Framework puro (y, por lo tanto, es un ensamblado mixto), recibirá el siguiente mensaje de error: 

Msj 6544, nivel 16, estado 1, línea 2
Error en CREATE ASSEMBLy para Assembly ' <assembly name> ' porque el ensamblado ' <assembly name> ' tiene un formato incorrecto o no es un ensamblado .net puro.
Encabezado PE no comprobable/código auxiliar nativo.

En este caso, no puede usar el ensamblado de .NET Framework junto con SQL CLR a menos que el ensamblado esté en la lista compatible que se documenta en este artículo. Además, un ensamblado de .NET Framework puede cambiar de un ensamblado puro a un ensamblado mixto entre versiones. Si usa un ensamblado que no está en la lista admitida, es posible que tenga una situación en la que el ensamblado funciona en una versión de .NET Framework, pero no en otra. Esta restricción no se aplica a los ensamblados de la lista admitida porque no es necesario registrar estos ensamblados mediante la instrucción CREATE ASSEMBLy.

Además, debe mantener estos ensamblados después de actualizar .NET Framework. Mensaje de error al ejecutar una rutina de CLR o usar un ensamblado en SQL Server:

El ensamblado del almacén de host tiene una firma diferente a la del ensamblado en GAC. (Excepción de HRESULT: 0x80131050)

Ensamblados admitidos en un entorno hospedado por CLR de SQL Server

Los siguientes ensamblados de .NET Framework se admiten en un entorno hospedado por CLR de 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