Retroceder   Foros del Web > Programación para sitios web > .NET > web forms

Respuesta
 
Herramientas Desplegado
Antiguo 14-oct-2006, 13:23   #1 (permalink)
_Puma_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 4
El método close no se refleja en SQL Server

¡Hola!

El problema es el siguiente.

Hemos desarrollado una aplicación web ASP.NET usando SQL Server 2000 y estamos experimentando problemas de rendimiento. Al verificar la información de procesos vía Enterprise Manager (o al ejecutar sp_who) vemos que el número de procesos se incrmenta gradualmente hasta saturar el servidor; el estatus de dichos procesos se mantiene en Sleeping.

He escrito el siguiente código para probar el cierre de conexión:

Dim Cnn As New SqlConnection("Cadena de conexion")
Dim Cmd As New SqlCommand("SELECT ...", Cnn)
Dim Rst As SqlDataReader
Cmd.Connection.Open()
rst = Cmd.ExecuteReader(CommandBehavior.CloseConnection)
rst.close

Notamos lo siguiente:
1.- Al llegar a la instrucción de apertura de conexión de inmediato vemos reflejada la conexión en el Servidor de SQL.
2.- Después de pasar por el método close el proceso se sigue viendo en el Servidor de SQL, incluso cuando la aplicación ha terminado; el estado en el que permanece es Sleeping.
3.- El proceso sigue vivo en el server de SQL incluso agregando el cierre de conexión de manera explícita.
4.- Esto sucede incluso cuando se usa un adaptador y un dataset.

¿Qué sucede?
¿ADO.NET no le avisa al IIS que cierre la conexión?
¿IIS no le informa a SQL Server que la cierre?
¿Lo que estamos viendo en SQL son sesiones huérfanas?

Espero me puedan ayudar. Saludos y gracias de antemano.
_Puma_ está desconectado   Responder Citando
Antiguo 14-oct-2006, 14:48   #2 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9


Te falta cerrar la conexion
Developer9 está desconectado   Responder Citando
Antiguo 14-oct-2006, 14:50   #3 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Ya

Cita:
Iniciado por _Puma_ Ver Mensaje
Dim Cnn As New SqlConnection("Cadena de conexion")
Dim Cmd As New SqlCommand("SELECT ...", Cnn)
Dim Rst As SqlDataReader
Cmd.Connection.Open()
rst = Cmd.ExecuteReader(CommandBehavior.CloseConnection)
rst.close
Algunas pistas... Tienes dos variables Cnn y Cmd... por allí como que te falta cerrar una de ellas
Developer9 está desconectado   Responder Citando
Antiguo 16-oct-2006, 07:40   #4 (permalink)
_Puma_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 4
Según la documentación al utilizar "CommandBehavior.CloseConnection" la conexión utilizada se cierra en automático, de cualquier forma el problema persiste aún cuando se hace:
Cnn.close
Cnn.Dispose
Cmd.Dispose
Cnn = nothing
Cmd = Nothing
_Puma_ está desconectado   Responder Citando
Antiguo 16-oct-2006, 08:53   #5 (permalink)
JocDev está en el buen camino
 
Fecha de Ingreso: noviembre-2004
Mensajes: 139
Yo tuve el mismo problema. Solucione utilizando la clase SQLHelper para hacer las consultas solo asi pude eliminar las conexiones que se quedaban por cada consulta.
JocDev está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:56.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93