Holaaa. eso hice. tuve que ponerle command.timeout=0 para que se demore lo que haga falta y asi resolví. pero ¿no hay manera de ejecutarlo asincrónicamente?. Muchas gracias

PEPE



----- Original Message ----- From: "Marcelo Abosch" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, October 21, 2008 2:45 PM
Subject: [puntonet] duda con el timeout al ejecutar un procedimiento almacenado


El connectionTimeout es el lapso que espera para conectarse al motor

el CommandTimeOut es el tiempo que le das para que ejecute el comando dentro de
la base una vez que ya estás conectado
y debieras setear comando.CommandTimeOut = n


----- Original Message ----- From: "Pepe Ballaga" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, October 21, 2008 4:26 PM
Subject: [puntonet] duda con el timeout al ejecutar un procedimiento almacenado


Holaaa pues resulta que tengo este procedimiento almacenado y me da Timeout
cuando lo mando a ajecutar desde la página aspx. sin embargo si lo corro
directamente; pues lo hace muy bian. ¿alguna ayuda con esto?. ya probé en el web config a ponerle al conectiontimeout=0 o =300 y me sigue dando lo mismo. Muchas
Gracias

PEPE

Timeout expired.  The timeout period elapsed prior to completion of the
operation or the server is not responding.

SqlConnection conn = new SqlConnection(Base.SelectedValue.ToUpper().Trim() ==
"TURBINA" ?
System.Configuration.ConfigurationManager.ConnectionStrings["turbina"].ConnectionString.ToString()
:
System.Configuration.ConfigurationManager.ConnectionStrings["caldera"].ConnectionString.ToString());
       SqlCommand comando = new SqlCommand();
       comando.Connection = conn;
       //conn.ConnectionTimeout = 0;
       comando.CommandText = "listar_variables";
       comando.CommandType = CommandType.StoredProcedure;
       comando.Parameters.Clear();
       comando.Parameters.Add(new SqlParameter("@tiempo",
fechador1.Fecha_seleccionada));
       comando.Parameters.Add(new SqlParameter("usuario", "PEPE" ));
       comando.Parameters.Add(new
SqlParameter("@intervalo",Convert.ToInt32(horas.Text)));
       conn.Open();
       //comando.Connection.Open();
       comando.ExecuteNonQuery();
       conn.Close();



el procedimiento alamcenado esta un poquito largo; pero es este:




ALTER PROCEDURE listar_variables @tiempo datetime, @usuario nvarchar(50),
@intervalo smallint


AS
set xact_abort on
begin transaction general
declare @nombretabla as nvarchar(50)
declare @variable as nvarchar(50)
declare @sql as nvarchar(4000)
declare @vez as smallint



set @vez=0
delete temporal where [EMAIL PROTECTED]
--declare tablas CURSOR FOR SELECT table_name, column_name from
INFORMATION_SCHEMA.COLUMNS where table_name='log5sec' or table_name='log30sec'
and table_column<>'timecol' and table_column<>'Msecol' and
table_column<>'localcol' and table_column<>'usercol' and
declare tablas CURSOR FOR SELECT table_name, column_name from
INFORMATION_SCHEMA.COLUMNS where (TABLE_NAME = 'log5sec' OR TABLE_NAME =
'log30sec') AND (COLUMN_NAME NOT LIKE '%col%') order by  table_name
open tablas
FETCH NEXT FROM tablas into @nombretabla, @variable
while @@FETCH_STATUS = 0
   begin
    declare @fechainicial as datetime
    set @fechainicial = @tiempo
    declare @fechafinal as datetime
    set @fechafinal= DATEADD (hh , @intervalo, @tiempo)

    while @fechainicial<[EMAIL PROTECTED]
     begin

       DECLARE @SQLString nvarchar(4000)
       DECLARE @ParmDefinition nvarchar(4000)
       DECLARE @valor float(24)
       set @valor=0


SET @SQLString = 'SELECT @valorOUT='[EMAIL PROTECTED]' FROM '[EMAIL PROTECTED]'
WHERE timecol= @tiempon' ;
       SET @ParmDefinition = '@tiempon datetime, @valorOut float(24) OUT';
       EXECUTE sp_executesql @SQLString, @ParmDefinition,
@[EMAIL PROTECTED] , @valorOUT = @valor OUT ;
       SELECT @valor;


      if @vez=0
set @sql='insert into temporal (tiempo, usuario, '[EMAIL PROTECTED]') values
('+char(39)+cast(@fechainicial as nvarchar(50))+char(39)+',
'+char(39)[EMAIL PROTECTED](39)+','+char(39)+cast(@valor as nvarchar(50))
+char(39)+')'
      else
set @sql='update temporal set '[EMAIL PROTECTED]'='+char(39)+cast(@valor as
nvarchar(50)) +char(39)+' where tiempo='+char(39)+cast(@fechainicial as
nvarchar(50))+char(39)+' and usuario='+char(39)[EMAIL PROTECTED](39)+ ''


       execute (@sql)
      set @fechainicial= DATEADD (hh , 1, @fechainicial)
     end
   set @vez=1

   FETCH NEXT FROM tablas into @nombretabla, @variable
  end
close tablas
deallocate tablas
commit transaction general




Responder a