Report Manager y Firefox….

No me había percatado de las limitantes de tamanio, para ver los reportes a través del Report Manager en Firefox. Pero también he encontrado un CSS fix para corregir el tamanio mostrado por Firefox. Sólo tenemos que agregar el siguiente código al archivo ReportingServices.css, (comúnmente ubicado en: C:Program FilesMicrosoft SQL ServerMSSQL.3Reporting ServicesReportManagerStyles):

   1: /* Fix report IFRAME height for Firefox */
   2: .DocMapAndReportFrame
   3: {
   4:    min-height: 860px;
   5: }

Parece que en algunos escenario hay que hacer algo más, revisar los comentarios de esta entrada: SQL Reporting Services – CSS fix for Firefox. Pero ese pequeño CSS Fix, es de gran ayuda para ver los reportes en firefox.

P.D.: En algunos casos no se actualizará al instante cuando agreguen el CSS. Creo que basta con cerrar firefox (todas las pestañas), y volver abrir para ver los cambios.

Saludos,

Post cruzado

ADO.NET: tu conexion no se cierra?, el poder de using

Aunque en desarrollo using sólo será una instrucción, cuando hagas deployment verás el poder de using :).


Sobre todo cuando empiecen a tener este mensajillo: “Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.


Como decía en uno los links, este mensaje principalmente se presenta cuando la web esta en producción, más no en desarrollo (ya que al detener la app, o el servidor virtual de asp.net, se reciclan todas las conexiones), pero cuando esta tu server, tendriás que reiniciar el servicio.


La causa de este problema (en mi escenario), es que las conexiones no se estaban cerrando como yo pensaba, la llamada al método Close(), nunca se daba.


Revisen esta entrada: Connection Pooling and the “Timeout expired” exception FAQ, pero más importante que revisarla, hagan el ejemplo. Cuando hagan el ejemplo revisen en el managment studio, las conexiones con el siguiente sp, SP_WHO:



   1: exec SP_WHO
   2: go

Verán como crece exorbitantemente el número de conexiones. Un ejemplo de los resultados es el siguiente pantallazo:



Como se puede apreciar todas las conexiones actuales a un servidor de base de datos, los login con nombre propio son de las estaciones de trabajo, se puede deteminar el patrón de quién esta generando conexiones de más, que ususario en que PC contra que base de datos, entre otras. Nótese que el spid, es el PrimaryKey del registro :D.


Otra herramienta de ayuda para diagnosticar en que parte del código o juego de consultas tenemos problemas con las conexiones, es usar el SQL Profiler:



Acá podemos determinar en que juego de columnas se están abriendo nuevas conexiones, cada consulta tiene un SPID, y junto con los resultados del SP_WHO, podemos buscar la raíz del problema.


Si tenemos problemas como el primer mensaje, la primera tarea sería identificar si estamos administrando bien las conexiones dentro de nuestra aplicación. Por cierto no es una solución, no en primera instancia, aumentar el número de conexiones máximas (modificando la propiedad Max Pool Size, que tiene un valor por defecto de 100), ya que cada vez van necesitar seguir aumentado más, este problema de escalabilidad con una buena administración de las conexiones no tiene porque dar mucha lata :D.


Ejemplo:



   1: using (OleDbConnection cnExcel = new OleDbConnection(strCnExcel))
   2: {
   3:    using (OleDbCommand cmd =
   4:                new OleDbCommand(“SELECT * FROM [Sheet1$]”, cnExcel))
   5:        {
   6:           cnExcel.Open();
   7:           using (OleDbDataReader reader = cmd.ExecuteReader())
   8:           {
   9:              //….
  10:           }
  11:        }
  12: }

P.D.: Using en general es usando para forzadamente liberar lo recursos usados, es por eso que comúnmente lo vemos ahora en el manejo de archivo, o en el uso de TransactionScope, y en general con cualquier objeto que implementa la interfaz IDisposable.


 Actualización (20070118): Revisar los comentarios y aclaraciones que hace Unai, con respecto al tema de la entrada.


Saludos,


Post cruzado