ultima the net microsoft know installed how framework following detector check cannot alongside .net sql-server sqlclr sql-server-2008-r2

.net - the - which version of net framework is installed



SQLCLR utilizando la versiĆ³n incorrecta de.NET Framework (6)

Desde el artículo y mi investigación en la web, parece que podría estar sucediendo lo contrario: ¿podría estar registrando un DLL 4.0? Parece que SQL Server 2008 siempre cargará el CLR 2.0 y no el CLR 4.0. Intente ejecutar esta declaración, le dirá qué versión está ejecutando su servidor SQL:

seleccione * de sys.dm_clr_properties

Durante un reinicio reciente de nuestro servidor de desarrollo, el servidor SQL Server comenzó a usar .NET 4.0 para el SQLCLR. Esto significa que nada de usar el CLR en SQL funciona, o al menos eso es lo que entiendo al leer estas fuentes:

http://software.intel.com/en-us/blogs/2009/10/16/sql-server-2008-sqlclr-net-framework-version/

www.sqlskills.com/BLOGS/BOBB/post/On-SQL-Server-and-NET-40.aspx

Todo lo que recibimos son mensajes de error de este tipo:

Mensaje 6517, nivel 16, estado 1, línea 1 Error al crear el dominio de aplicación "xxx.dbo [ddl] .3". La firma del tipo de método no es compatible con Interop.

Ejecutando la declaración (como lo sugiere @ john-christensen)

select * from sys.dm_clr_properties

resultados en la siguiente información:

*Name* *Value* directory C:/Windows/Microsoft.NET/Framework64/v4.0.30319/ version v4.0.30319 state CLR is initialized

¿Alguien sabe cómo resolver esto o cómo podemos obligar a CLR de SQL Server a usar una versión anterior de Framework?


En tu publicación en Intel a la que haces referencia, si la lees con atención, dice:

SQL Server 2008 y la próxima versión de SQL Server 2008 R2, previamente con el nombre en código "Kilimanjaro", continuarán cargando la última versión de servicio de la versión 2.0 CLR .

Y más tarde:

Si bien las versiones futuras de SQL Server pueden cargar versiones más nuevas del CLR, o incluso admitir la carga de múltiples CLR dentro del proceso, la versión 2.0 del CLR está aquí para quedarse para SQLCLR dentro de SQL Server 2008 y SQL Server 2008 R2.

No sé cómo se las arregla para obtener algo como .NET 4 cargado dentro de SQL Server 2008 R2 ...


Experimenté el mismo problema molesto. Ninguna de las cosas de Geografía / Geometría en mi base de datos funcionó. Tomé algunas reinstalaciones fallidas del servidor SQL para finalmente (¡algunas semanas más tarde!) Encontrar la siguiente clave en mi registro que se había establecido en ''1''

HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / .NETFramework / OnlyUseLatestCLR

cuando lo restablecí a ''0'', y reinicié la máquina, ¡las cosas volvieron a funcionar!

Hans


Hicieron elecciones explícitas para garantizar que la instalación de .NET 4.0 no fuera impactante. No debería estar utilizando .NET 4.0 ni ninguno de los archivos nuevos, excepto los nuevos archivos shim, mscoree.dll y mscoreei.dll. Esos deberían ser compatibles con el tiempo de ejecución 2.0. Puede ejecutar Process Explorer para ver los números de versión de las DLL cargadas para verificar que se está ejecutando en el tiempo de ejecución correcto.


Por lo general, puede obligar a una aplicación .NET a usar una versión específica de .NET Framework especificando la etiqueta supportedRuntime en el archivo de configuración de la aplicación.

Entonces, puede intentar crear un sqlservr.exe.config en la carpeta /Binn debajo de la ruta raíz de la instancia de SQL y especificar allí que le gustaría usar solo versiones de .NET hasta 3.5. Compruebe este enlace de MSDN para la estructura del archivo de configuración.


Tuve este problema por un día y, después de actualizar mi Windows, el problema de los marcos de .NET desapareció. El problema se relaciona con el marco de .Net que intenta repararlo.