Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problemas con una conexion

746 views
Skip to first unread message

David Campo

unread,
Sep 26, 2008, 6:32:11 AM9/26/08
to
Hola a todos, buenos dias.

Tengo un problemilla con una conexion y no se como arreglarlo:

Estoy diseñando una pequeña alicación que transforma una BBDD en sql 2000 en
XML.
La estructura es la siguiente, hay muchos negocios, dentro de los negocios
hay muchos propietarios por cada negocio.

Tengo abierto un SQLDataReader que me lee los negocios, por cada negocio
abro otro SQLDataReader y vuelco los datos de cada propietario.
Es extraño porque al consultar los datos de los propietarios de ese negocio
me salta este error:

"Valor de tiempo de espera caducado. El período de tiempo de espera expiró
antes de obtener una conexión del grupo. Esto puede suceder porque todas las
conexiones de la agrupación estaban en uso y se alcanzó el máximo tamaño del
grupo."

He buscado informacion, encontré que solo se puede tener abierto un
datareader por conexion, pero luego encontré que ahora ya se pueden tener
más de uno.
También encontré que lo que tenia que hacer era aumentar el tiempo de espera
de la conexion (TimeoutConnection) pero esa propiedad es de solo lectura.

Probe a cambiar en el SQL el tiempo de espera de consulta y aumentarlo, pero
sige igual.

Si alguien pudiese ayudarme le estaria muy agradecido, seguiré buscando por
si encuentro algo de todas formas.

Gracias y un saludo


Alberto Poblacion

unread,
Sep 26, 2008, 7:13:24 AM9/26/08
to
"David Campo" <david> wrote in message
news:ORTAtM8H...@TK2MSFTNGP02.phx.gbl...

> "Valor de tiempo de espera caducado. El período de tiempo de espera expiró
> antes de obtener una conexión del grupo. Esto puede suceder porque todas
> las conexiones de la agrupación estaban en uso y se alcanzó el máximo
> tamaño del grupo."

Hay otra razón por la que puede salir ese error: que en algún otro sitio
del programa abras conexiones y se te olvide cerrarlas. Cada vez que eso
ocurre, se consume una nueva conexión del pool de conexiones. Esto se puede
repetir varias veces, hasta que alcanzas el número máximo de conexiones del
pool. Cuando se llega a esa situación, la próxima vez que intentas abrir una
conexión se queda esperando a que se cierre alguna de las que ya están
ocupadas para devolvértela. Como no se cierra ninguna, al cabo de 20
segundos (timeout por defecto) te devuelve ese error que estás viendo.
Obviamente, no se arregla aumentando el valor del timeout.
El problema es que este tipo de situaciones a veces es muy difícil de
depurar, ya que el sitio donde te salta el mensaje de error puede ser que no
tenga nada que ver con el sitio donde hay un error en tu código, que es ese
otro sitio del programa en el que se abre una conexión y no se cierra. Por
eso se suele recomendar que siempre que se abra una conexión a base de datos
se utilice una construcción de tipo Using, o su equivalente escrito a mano
mediante Try...Finally, para garantizar que se cierra incluso aunque hagas
un Return entre medias.

David Campo

unread,
Sep 26, 2008, 7:30:11 AM9/26/08
to
Joder macho, clavao, una respuesta clara, entendible y acertada.

Muchas gracias Alberto, voy a mirarlo, y eso del Using, me ha gustado la
idea.

Reitero muchas gracias.

"Alberto Poblacion" <earthling-quitae...@poblacion.org>
escribió en el mensaje news:ewMLpj8H...@TK2MSFTNGP06.phx.gbl...

idmer...@gmail.com

unread,
May 20, 2013, 8:20:55 AM5/20/13
to
Hola amigos. yo tengo el mismo problema. en mi caso yo estoy usando el setInterval de javascript que este ejecuta cada 11000 milesegundos. el cual hace una llamada ajax al servidor para obtener la información.
esto funciona muy bien hasta un cierto tiempo de ahi me sale el siguiente error:

Valor de tiempo de espera caducado. El período de tiempo de espera expiró antes de obtener una conexión del grupo. Esto puede suceder porque todas las conexiones de la agrupación estaban en uso y se alcanzó el máximo tamaño del grupo.

mira yo estoy cerrando la conexión cada vez que lo utilizo.

using (SqlConnection connection =
new SqlConnection(ConfigurationManager.ConnectionStrings["bdpersonalConnectionString"].ConnectionString))
{
SqlCommand command = new SqlCommand("SP_SGI_CNS_DESEMPEÑO_ADM1PAG_GLOBAL", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@Periodo", Periodo));
command.Parameters.Add(new SqlParameter("@Padre", padre));
command.Parameters.Add(new SqlParameter("@JefePadrecns", jefePadre));
connection.Open();
SqlDataAdapter da = new SqlDataAdapter(command);
da.Fill(objTb);
connection.Close();
}
espero su ayuda,
saludos.



0 new messages