Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó... " (http://www.forosdelweb.com/f29/error-valor-tiempo-espera-caducado-periodo-tiempo-espera-caduco-531239/)

juancete 07/11/2007 04:28

Error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó... "
 
hola, tengo un problema en visual studio 2005, utilizo el sql server que trae integrado y me da el siguiente error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó antes de completar la operación o el servidor no responde".

utilizo para hacer los select un sqldataadapter.fill() y asi lleno la tabla con los datos.

Código:

public class BaseDatos
{
  private SqlConnection _cnx = new SqlConnection();
  private SqlCommand _comando= new SqlCommand();
  private SqlDataAdapter _adap = new SqlDataAdapter();

  public BD()
  {
        _cnx.ConnectionString = "String de conexion.....";
        _comando.Connection = this._cnx;
  }

  public datatable metodoSelect(string consultaSQL)
  {
      datatable tabla=new datatable("datos");
      this._comando.CommandText = consultaSQL;
      this._adap.SelectCommand = this._comando;
      try
      {
            this._adap.Fill(tabla);
            return tabla;
      }
      catch (Exception ex)
      {}                 
  }
}

El utilizar el adapter es el causante del error. Cada vez que hago un select utilizo el metodo metodoSelect(consulta): creo una conexion nueva (al usar el constructor de la clase BaseDatos), asigno la consulta al sqlcommand, asigno el sqlcommand al adapter y con el adapter hago el fill.

El error se da exactamente cuanto inicio la transaccion, modifico una tabla (con otro metodo que no incluyo aki), luego hago una consulta select con metodoSelect(consulta) sobre la tabla modificada (creando una nueva instancia de la clase BaseDatos), al hacer sqldataadapter.fill() para recuperar los datos se produce el timeout. Si hago la consulta sobre una tabla no modificada en la transaccion no se produce el error.

La solucion fue usar para hacer el select la propia instancia de la clase BaseDatos que uso para la transaccion en lugar de crear una nueva. De todas formas alguien podria decirme pq se producia el error? me imagino que podria ser pq en una transaccion mientras no hagas el comit() los datos no quedan fijos entonces el adapter de la nueva conexion se hara un lio.

erick_arcini 07/11/2007 09:04

Re: Error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó.
 
si así como tal estas programando tu clase y solo cambiaste la cadena de conexión para explicarnos tu error, creo que el problema lo tienes en estas dos lineas

Código:

public datatable metodoSelect(string consulta)
Código:

this._comando.CommandText = consultaSQL;

juancete 07/11/2007 09:37

Re: Error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó.
 
me equivoque al copiar y pegar, en ambos es consultaSQL.

el string de conexion es el mismo. por un lado esta la conexion abierta para hacer operaciones dentro de una transaccion y por otro lado las conexiones que abro y cierro al hacer cosultas SELECT y llenar la tabla con adaptador.fill()

.seb 07/11/2007 11:38

Re: Error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó.
 
El problema es que la consulta esta demorando mucho y cae el timeout del comando.
El valor por defecto de la propiedad CommandTimeout es 30 segundos, agrandalo a ver si es eso, y si es, despues puedes ver como agilizar la consulta

http://msdn2.microsoft.com/en-us/lib...ndtimeout.aspx

juancete 08/11/2007 04:41

Re: Error "Valor de tiempo de espera caducado. El período de tiempo de espera caducó.
 
he probado a ponerlo a 60 y tampoco tira, con lo unico que consigo de momento hacerlo funcionar es con lo que puse en el primer post


La zona horaria es GMT -6. Ahora son las 19:59.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.