Holaa Sebastian ¿por que dices que un cursor no es recomendable? ¿por que 
tampoco se recomienda ExecSQL?. Perdona es para saber que me recomendarías en 
su lugar y trataría de cambiarlo. Muchas gracias

PEPE
  ----- Original Message ----- 
  From: Sebastian Ariel Gambolati 
  To: vbusers List Member 
  Sent: Tuesday, October 21, 2008 9:39 PM
  Subject: [vbusers] duda con el timeout al ejecutar un procedimiento almacenado


  Yo veria de modificar el Stored Procedure. Un Cursor no es recomendable. Y un 
ExecSql tengo entendido que tampoco. Por lo pronto, veria de cambiarle el 
TimeOut a la conexion con la que ejecutas el SP desde el ASPX.



------------------------------------------------------------------------------

  Sebastian Gambolati






  ----- Mensaje original ----
  De: Pepe Ballaga <[EMAIL PROTECTED]>
  Para: vbusers List Member <[email protected]>
  Enviado: martes 21 de octubre de 2008, 15:26:24
  Asunto: [vbusers] 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



  __________________________________________________
  Correo Yahoo!
  Espacio para todos tus mensajes, antivirus y antispam ¡gratis! 
  ¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar

Responder a