SqlServer: No se admite la ejecución de CLR con agrupación ligera

 

Es una puesta en producción después de hacer una migración a SQLServer 2014, nos encontramos con este problema: “Common language runtime (CLR) execution is not supported under lightweight pooling. Disable one of two options: clr enabled or lightweight pooling”. Después de buscar, leer, mirar documentación encontré un post con la solución que dejo aquí para compartirla.

Exception : System.Data.SqlClient.SqlException

Message (ingles) : Common language runtime (CLR) execution is not supported under lightweight pooling. Disable one of two options: “clr enabled” or “lightweight pooling”.

Message (castellano): No se admite la ejecución de CLR con agrupación ligera. Deshabilite una de las dos opciones: “clr enabled” o “lightweight pooling”.

Nuestro problema era que estamos usando: SELECT FORMAT(…) con lightweight pooling activado,  el FORMAT, SQL lo resuelve haciendo un llamada al CLR con lo cual esto provoca el conflicto. Una opción es quitar la llamada al FORMAT y cambiarlo por CAST o una función propia si no queremos tocar configuración de SQL Server sobretodo en entornos de producción, la otra es la que explico más abajo.

CLR Integration and Lightweight Pooling Conflict

I thought I am CLR Integration Guru in Sql Server but this morning I came to know that there are lots of things left to grab. While I was moving the local database on the new live server I run some CLR Procedure which Says these procedures required CLR Integration enabled. So to get that done.

I went on SQL Server Surface Area Configuration -> Surface Area configuration for features -> Enable CLR Integration. till here, every thing seems fine I encounter no error.

After that when I re-execute the same query I get a new error:

“Invalid connection (Common language runtime (CLR) execution is not supported under lightweight pooling.
Disable one of two options: “clr enabled or “lightweight pooling”.

I really have no idea what the light weight pooling is but the need of the time is to disable it. After googling for a bit I get this link. but still no use as the query written in this page is not working infact it is giving error.

  1.  sp_configure ’show advanced options’, 1;
  2.  GO
  3.  sp_configure ‘lightweightpooling’, 0;
  4.  GO
  5.  RECONFIGURE;
  6.  GO
Error: The configuration option ‘lightweightpooling’ does not exist, or it may be an advanced option.

To find what is going wrong, I quried on sys.configurations because this table contain database configuration.

   select * from sys.configurations where name like ‘%light%’

Finally, after running the above query I came to know that there is a space in ‘lightweightpooling’. It means it is ‘lightweight pooling. Now when I diagnose the problem I execute the following query which make my sql server CLR Integrated.

  1. USE master
  2. GO
  3. EXEC sp_configure ’show advanced options’, 1
  4. GO
  5. RECONFIGURE WITH OVERRIDE
  6. GO
  7. EXEC sp_configure ‘lightweight pooling’, 0
  8. GO
  9. EXEC sp_configure ‘clr enabled’, 1
  10. GO
  11. RECONFIGURE WITH OVERRIDE
  12. GO
  13. EXEC sp_configure ’show advanced options’, 0
  14. GO

After executing the query, we might need to restart the SQL Services to make it work.

 

Recomendación

Como siempre con estos temas, se recomienda realizar primero la prueba en un entorno separado para confirmar que se soluciona el problema detectado y no provoca efectos colaterales, ya que en este caso afecta a la base de datos “master”.

Fuente: https://weblogs.asp.net/aghausman/clr-integration-and-lightweight-pooling-conflict
MSDN: https://docs.microsoft.com/en-us/sql/relational-databases/policy-based-management/disable-lightweight-pooling

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s