Opinión, Discusión, Comentarios
  Search 
Monday, October 20, 2014 ..:: ForosDiscusion ::.. Register  Login
Foros MUGPERU Minimize
Subject: CONEXIONES ABIERTAS
Prev Next
You are not authorized to post a reply.

Author Messages
emiaj
Posts:157

23/09/2005 05:09 PM  

SALU2 COMUNIDAD....TENGO UNA APLICACION WEB QUE TRABAJA CON UNA BBDD EN SQL...DE CURIOSO ABRI EL ANALIZADOR SQL PARA VER LA TRAZA DE ALGUNOS STORES Y ME DI CON LA SORPRESA DE QUE A PESAR DE CERRAR LA CONEXION SIEMPRE APARECIAN ESTAS LINEAS EN EL ANALIZADOR:

ExistingConnection -- network protocol: LPC  .Net SqlClient Data Provider  

ExistingConnection -- network protocol: LPC  .Net SqlClient Data Provider  

ASUMO QUE EL ANALIZADOR ME ESTA DICIENDO QUE EXISTEN CONECCIONES ABIERTAS EN MI BBDD...EL PROBLEMA ES QUE EN MI CODIGO LAS ESTOY CERRANDO Y NADA, ES MAS AUN CERRANDO EL BROWSER KEDAN ABIERTAS:

try
sqlcn.open
'operaciones..stores..etc
catch(ex as exception)
'aki opero los errores
finally
sqlcn.close
sqlcn=nothing
end try

Alguien me puede dar una ayuda sobre esto...salu2

Ricardo_Hinostroza
Posts:74

26/10/2005 09:51 AM  

Deberias de Eliminar esos procesos (o conexiones) desde el Administrador del SQL Server, dejar completamente libre de conexiones de tus aplicaciones .Net y comenzar a probar, hacer un Tracing de cuando abres y cuando cierras cada una de tus conexiones. trata de manejar las conexiones a traves de un componente, es mas administrado y mas seguro.

emiaj
Posts:157

26/10/2005 10:32 AM  

Gracias por el comentario, voy a intentar lo k me dices, otra kosa ke he notado, es ke este asunto okurre solamente kon datareaders (sera ke no estoy haciendo datareader1.close), bueno si logro algo mando el post....

gracias nuevamente...salu2

DeadMan
Posts:45

19/02/2006 07:49 AM  
Por defecto ADO.Net usa Connection Pooling, por tal razón tus conexiones a la DB quedan abiertas en el servidor a pesar de que tú la cierres en tu programa.

Eso lo hacen con la finalidad de ahorrar el tiempo (y recursos) que cuesta conectarse a la DB.  Así , si tu aplicacion necesita conectarse nuevamente tendrá ya una conexion disponible.

Según tu codigo puedo ver que usas el SQLCLIENT, pues bien , si deseas deshabilitar el ConnectionPooling debes agregar esto a tu cadena de conexion: "Pooling=false;" ... Por ejemplo:

"Data Source=SERVER;Initial Catalog=pubs;User Id=sa;Password=p@ssw0rd;Pooling=False"



Pero si deseas seguir usando Connection Pooling, sería bueno que especifiques la cantidad mínima y máxima de conexiones que deseas que permanezcan abiertas, así por ejemplo:

"Data Source=SERVER;Initial Catalog=pubs;User Id=sa;Password=p@ssw0rd;Pooling=true;Min Pool Size=5; MaxPool Size=15;"

Todo lo anterior es aplicable cuando se usa el namespace System.Data.SqlClient.

Si por el contrario utilizas System.Data.OleDb y deseas deshabilitar el connection pooling(que también aquí está habilitado por defecto) debes escribir lo siguiente:

strCadenaDeConexion = "Provider=sqloledb;Data Source=SERVER;Initial Catalog=pubs;User Id=sa;Password=p@ssw0rd;OLE DB Services=-4;";

Cristiam Espinoza dijo en en una ocasiñon que no recomendaba usar el Connection pooling, pues es peligroso dejar las conexiones abiertas. Él indiscutiblemente tiene mucha experiencia.


Personalmente yo he tenido un GRAN PROBLEMA al usar connection pooling con System.Data.OleDb y SQlServer 2000.   El problema fue que no especifiqué el tamaño minimo ni maximo del Pool.
Y el desastroso resultado que tuve fue que despues de 1 hora de procesamiento tenía más de 700 conexiones abiertas (eso se puede ver con el comando sp_who del sqlserver)  y yo sólo lo estaba probando con dos aplicaciones clientes(de 2 threads cada una).
Definitivamente a lo mucho se necesitaba eran 4 conexiones( pues habian 2 clientes con 2 hilos cada uno), pero el Sql Server abría muchas conexiones y cerraba pocas .... y segun me indicaba el comando sp_who solo una conexion estaba activa y las demas en espera.
Hasta que llegó el momento culminante cuando el computador dejó de funcionar totalmente y se quedó colgado.
Supongo que eso se debió a que hubo una saturación de memoria , pues según dicen mantener una conexion a la Db es muy costosa y consume muchos recursos.

espero haberte orientado un poco

Ojala que algun(a) amigo(a) que ya haya usado exitosamente el connection pooling con OLEDBConnection pueda orientarnos mejor




Q.E.P.D.
emiaj
Posts:157

08/03/2006 06:58 AM  

Muchas gracias, se ke el post es un poko antiguo y se valora ke despues d tiempo alguien se tome la molestia de responder, la verdad no konocia esto del pooling, ahora, esto supongo solo se da en aplicaciones web, ya las aplicaciones windows he visto ke apenas cierro el programa la coneccion tambien lo hace, supongo ke a diferencia d las aplicaciones windows donde el sql se enlaza a un exe (programa.exe) en las de tipo web se enlaza al aspnet sera por eso ke al hacer un iisreset se liberan los rekursos, voy a investigar un poko mas y espero postear algo sobre el pooling en .net (ojala no dentro de 4 meses :D ) , nuevamente gracias.

bytes.

DeadMan
Posts:45

12/03/2006 06:23 AM  

Sorry por la demora

Bueno, el connection pooling funciona tanto para aplicaciones web o windows ... Las conexiones siguen abiertas mientras la aplicación  sigue viva. 

Lo que ocurre es que si en tu programa te conectas para hacer un select , luego te desconectas , y nuevamente te conectas para hacer una inserción y otra vez te desconectas, pues en realidad el SQL Server nunca se desconectó ....

Te recomiendo que uses el Profiler del SqlServer 2000 mientras ejecutas tu aplicación ... ahi veras todos los LOGIN y LOGOUT que ocurren el la base de datos

-----

Por cierto , al usar "system.Data.Oledb" para conectarse a  Oracle 9i NO funciona el conecction pooling ...  en ese caso es necesario usar ODP ... pero aún no he hecho la prueba

Happy .NETing !!!


Q.E.P.D.
emiaj
Posts:157

22/05/2006 08:47 AM  
OK paso mucho tiempo y ya lei estos dos articulos donde explican d forma simple algunos puntos sobre el pooling en sql y oracle....espero les guste....bytes

http://www.15seconds.com/issue/040830.htm

http://www.ondotnet.com/pub/a/dotnet/2004/02/09/connpool.html
You are not authorized to post a reply.
Forums > Temas de Interés > Usando ADO.NET > CONEXIONES ABIERTAS



ActiveForums 3.7
        
Copyright 2001-2014 MUGPERU   Terms Of Use  Privacy Statement