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