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

En este artículo se describe la directiva de compatibilidad para ensamblados de Microsoft .NET Framework no probados en el entorno hospedado por 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 compatibilidad con ensamblados

Al registrar un ensamblado que hace referencia a un ensamblado de .NET Framework no probado en SQL Server, puede recibir el siguiente mensaje de advertencia:

Ensamblado de .Net Frameworks AssemblyName que está registrando no se ha probado completamente en SQL Server entorno hospedado.

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

Un ensamblado de .NET Framework no probado puede salir de su proceso de host cuando se produce una condición crítica, como la condición de memoria baja. Puede usar el ensamblado en el entorno hospedado por CLR SQL Server por su cuenta y riesgo. Sin embargo, SQL Server Customer Support Services (CSS) no le ayudará a usar y solucionar problemas asociados a un ensamblado de .NET Framework no admitido. Si CSS determina que un ensamblado determinado no admitido provoca problemas de 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 de SQL Server determinado si es necesario.

Registro de ensamblados

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

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

Msg 6544, Level 16, State 1, Line 2
Error de CREATE ASSEMBLY para el ensamblado "<nombre> de ensamblado" porque el ensamblado "<nombre> del ensamblado" 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 admitida 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 funcione 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 estos ensamblados no son necesarios para registrarse mediante la CREATE ASSEMBLY instrucción .

Además, debe mantener estos ensamblados después de actualizar .NET Framework. El siguiente mensaje de error se muestra cuando se ejecuta una rutina CLR o se usa un ensamblado en SQL Server:

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

Ensamblados que se admiten en un entorno hospedado SQL Server CLR

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