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