Principales respuestas
Conexiones con la BBDD.

Pregunta
-
Buenos Dias a todos,
Estoy trabajando con una Base de datos Sql Server 2008. Hay cosas que me parecen extrañas, corregirme si me equivoco.
cuando ejecuto el procedimiento almacenado SP_WHO, me aparecen un demasiadas conexiones...
Desde la aplicacion que se alimenta de esta BBDD, siempre hago un .Open() y .Close() de la conexion con la BBDD cada vez que ejecuto un comando, pero parece que las conexiones se quedan abiertas, no se si esto sera normal??
Ademas esto me esta provocando que una conexion que esta en el sleeping tenga bloqueados algunos recursos.
Adjunto una imagen para mas claridad
Un saludo,
Respuestas
-
Hola.
Por esas pruebas que has realizado has conseguido demostrar que la aplicación no cierra de forma efectiva las conexiones. Incluso deja transacciones sin confirmar (por los bloqueos, diría que usas un nivel de aislamiento más alto del necesario, parece serializable, por lo que se intuye de bloqueos de rangos). El estado sleeping significa que están vivas aún, aunque sin realizar ninguna acción en ese momento.
Revisa la aplicación y asegúrate de que las conexiones desaparecen cuando así te lo propones. Si no lo consiguieras, al no ser éste un foro de desarrollo, quizá recurriendo a algún otro especializado en el lenguaje de programación que emplees encuentres una ayuda más eficaz.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande- Marcado como respuesta Alberto López Grande (qwalgrande)Moderator sábado, 28 de abril de 2012 14:17
Todas las respuestas
-
Hola.
Por esas pruebas que has realizado has conseguido demostrar que la aplicación no cierra de forma efectiva las conexiones. Incluso deja transacciones sin confirmar (por los bloqueos, diría que usas un nivel de aislamiento más alto del necesario, parece serializable, por lo que se intuye de bloqueos de rangos). El estado sleeping significa que están vivas aún, aunque sin realizar ninguna acción en ese momento.
Revisa la aplicación y asegúrate de que las conexiones desaparecen cuando así te lo propones. Si no lo consiguieras, al no ser éste un foro de desarrollo, quizá recurriendo a algún otro especializado en el lenguaje de programación que emplees encuentres una ayuda más eficaz.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande- Marcado como respuesta Alberto López Grande (qwalgrande)Moderator sábado, 28 de abril de 2012 14:17
-
-
-
si ejecutas la consulta esta, verás el nivel de aislamiento que estás usando, que tiene su relevancia coo te transmite Alberto
http://portalsql.com/index.php/2010/01/descubrir-bloqueos-en-sql-server/
Por otra parte es posible que sea el pool de conexiones como dice Carlos. Pero para que un bloqueo se quede, tienes que haber dejado una transacción abierta, así pues o bien el disño de transacciones no está bien o estás enmascarando errores, o ambas cosas. Ahí quizá podamos ayudarte.
Comparte lo que sepas, aprende lo que no sepas (FGG)
portalSQL
El rincón del DBA -
Eso es muy probable que sea porque tenes connection pooling. Esto reserva las conexiones para mejorar la performance. Cada vez que tu app abre una conexion insume recursos, cuando la cierra tambien. Para aplicaciones de alto rendimiento (esto es que estan casi permanentemente conectadas a la DB) esto conlleva una carga y una caida de performance, por ende es preferible que las conexiones queden a la espera de ser reutilizadas, de esa forma no tenes la perdida de abrir y cerrar las conexiones. Esto lo tienes que ver en el codigo de tu aplicacion .Net
Saludos
Systems Engineer
Developer & Research Engineer
DBA SQL Server 2005/2008
VG Cloud Inc
My Profile