Si ar ejecutar el lector en un bucle, donde se ejecuta muchas veces, y luego asegurarse de que está utilizando CommandBehavior.CloseConnection
SqlCommand cmd = new SqlCommand();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Si no, cada vez que el bucle de la línea de procesos, cuando termina y el rdr y el objeto de conexión quedan fuera del alcance, el objeto de conexión no se cerrará explícitamente, por lo que solo se cerrará y se devolverá al grupo cuando el recolector de basura finalmente llegue a finalizarlo ...
Entonces, si su ciclo es lo suficientemente rápido, (lo cual es muy probable), se le acabarán las conexiones. (El grupo tiene un límite máximo que puede generar)
Esto causará latencia y retrasos adicionales ya que el código sigue creando conexiones adicionales innecesarias (hasta el máximo) y esperando que el GC "alcance" el ciclo que los está usando ...
¿Se puede publicar algún código? –
¿El analizador de consultas Sql revela alguna pista sobre el problema? –
EJB: código no es necesario para publicar. El problema es el mismo incluso si usamos el comando de ejecución puro del lector (disponible en la ayuda de MS) – Maciej