Foros del Web » Programando para Internet » ASP Clásico »

Tiempo de espera agotado!!!

Estas en el tema de Tiempo de espera agotado!!! en el foro de ASP Clásico en Foros del Web. Hola a todos!!!...tengo una aplicacion en la cual debo mostrar una tabla que es el resultado de uan consulta entre 3 servidores...dichos servidores ya estan ...
  #1 (permalink)  
Antiguo 08/03/2007, 12:46
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Tiempo de espera agotado!!!

Hola a todos!!!...tengo una aplicacion en la cual debo mostrar una tabla que es el resultado de uan consulta entre 3 servidores...dichos servidores ya estan vinculados...el problema es que en ocasiones realizo la consulta y me marca tiempo de espera agotado o bien ni suqiera me muestra nada...ya probe en colocarle la instruccion de

<% Server.ScriptTimeOut = 1800 %>

pero sigo teniendo el mismo problema...de hecho si ejecuto la consulta en el enterprise manager de sql y si muestra el resultado, tambien lo hace en la aplicacion web...pero si no tampoco en la aplicacion web...lo raro es que si ejecuta sin problema todas las consultas en el query analizer...sugerencias para solucionar este problema??...hay manera de hacerlo mas eficiente???...agradezco de antemano la ayuda!!!

Parte del codigo que utilizo:

Código:
<% Server.ScriptTimeOut = 1800 %>
<%
	'ESTOS REQUEST.FORM SON LOS NOMBRES DE LOS CAMPOS DE FORM DE LA PAGINA ANTERIOR
	if not isdate(Request.Form("dia1")) and isdate(Request.Form("mes1")) and isdate(Request.Form("year1")) then 
	Response.Redirect "InicioA_SistemP_Diario.asp"
	end if

	vdia1= (Request.Form("dia1"))
	vmes1= (Request.Form("mes1"))
	vyear1= (Request.Form("year1"))
	
	vFecha1= vmes1 & "/" & vdia1 & "/" & vyear1 & " " & "00:00"
	vFecha2= vmes1 & "/" & vdia1 & "/" & vyear1 & " " & "23:59"
	
	
	'Conección con la BD
	sConnStr = "Driver={SQL Server};Server=SERV-AUT;Database=Rssql;UID=sa;Password=sa;"
	Set objConn = Server.CreateObject("ADODB.Connection") 
	objConn.Open sConnStr
	
	
	'Crear tabla temporal
	Set rsTest = Server.CreateObject("ADODB.Recordset")
	
	
	'Ligamos la tabla temporal a la vista de la BD
	strSQL_N = "SELECT dbo.E1.CODE, dbo.E1.DIGITO, MSap_1.Medida, MSap_1.Linea, dbo.CAT_TRADE.EQUIPO, dbo.CAT_TRADE.SIDEWALL AS SIDEWALL, AVG(dbo.E1.WEIGHT) AS PPROM, dbo.E1PESO.PESO AS PESTAND, COUNT(dbo.E1.CODE) AS CANTIDAD, dbo.ES1.WAREHOUSE, MIN(dbo.E1.FECHC) AS FECHMIN FROM dbo.CAT_TRADE INNER JOIN dbo.E1 ON dbo.CAT_TRADE.DIGITO = dbo.E1.DIGITO LEFT OUTER JOIN dbo.E1PESO ON dbo.E1.CODE = dbo.E1PESO.CODE RIGHT OUTER JOIN [SERV-BCODE].Rast.dbo.opUnicos opUnicos_1 LEFT OUTER JOIN SERV_MONITOREO.Monitoreo.dbo.MSAP MSap_1 ON opUnicos_1.CodigoC = MSap_1.CodigoC ON dbo.E1.IDETIQ = opUnicos_1.IdEtiq WHERE (dbo.E1.FECHC >='" & vFecha1 & "') AND (dbo.E1.FECHC <='" & vFecha2 & "') GROUP BY dbo.E1.CODE, MSap_1.Medida, dbo.E1.WAREHOUSE, MSap_1.Linea, dbo.E1.DIGITO, dbo.CAT_TRADE.EQUIPO, dbo.CAT_TRADE.SIDEWALL, dbo.E1PESO.PESO HAVING (dbo.E1.CODE > '0') AND (dbo.E1.WAREHOUSE = 1) ORDER BY dbo.E1.CODE, dbo.E1.DIGITO, MSap_1.Medida, MSap_1.Linea"
	
	'Abre tabla temporal
	rsTest.ActiveConnection = objConn
	rsTest.Open strSQL_N, objConn,2,2
	rsTest.Requery 
	
	
	'*** CANTIDAD TOTAL ***
	Set rsRecordsetNo2 = Server.CreateObject("ADODB.Recordset")
	strSQL_Nunmero2 = "SELECT COUNT(CODE) AS TOTAL FROM E1 WHERE FECHC >='" & vFecha1 & "' AND FECHC <='" & vFecha2 & "' AND (CODE > '0') AND (WAREHOUSE = 1)"
	
	'Abre tabla temporal
	rsRecordsetNo2.ActiveConnection = objConn
	rsRecordsetNo2.Open strSQL_Nunmero2, objConn,2,2
	rsRecordsetNo2.Requery

%>

	'Y muestro la tabla con los resultados:

    <% do while not rsTest.EOF%>
  <tr bgcolor="#F4F4F4">
    <td width="51" height="22" align="center" valign="middle"><div align="center" class="Estilo29"><%=rsTest("CODE")%></div></td>
    <td width="44"><div align="center" class="Estilo29"><%=rsTest("DIGITO")%></div></td>
    <td width="81"><div align="center" class="Estilo29"><%=rsTest("MEDIDA")%></div></td>
    <td width="69"><div align="center" class="Estilo29"><%=rsTest("LINEA")%></div></td>
    <td width="55"><div align="center" class="Estilo29"><%=rsTest("EQUIPMENT")%></div></td>
    <td width="66" bgcolor="#F4F4F4"><div align="center"><span class="Estilo29"><%=rsTest("SIDEWALL")%></span></div></td>
    <td width="95" bgcolor="#F4F4F4"><div align="center"><span class="Estilo29"><%=rsTest("PPROM")%></span></div></td>
    <td width="75" bgcolor="#F4F4F4"><div align="center"><span class="Estilo29"><%=rsTest("PESTAND")%></span></div></td>
    <td width="66" bgcolor="#F4F4F4"><div align="center" class="Estilo29"><%=rsTest("CANTIDAD") %> </div></td>
  </tr>
  <% rsTest.MoveNext 
   loop%>
</table>
<table width="665" border="0" align="center">
  <tr>
    <td class="Estilo19 Estilo4">&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td width="138" align="right"><table width="138" border="1" bordercolor="#333333" bgcolor="#FFFFFF">
      <tr>
        <td width="138" bordercolor="#333333" bgcolor="#999999"><div align="justify"><strong>TOTAL</strong>:<span class="Estilo4">&nbsp;&nbsp;<%=rsRecordsetNo2("TOTAL")%></span></div></td>
      </tr>
  #2 (permalink)  
Antiguo 09/03/2007, 12:09
 
Fecha de Ingreso: julio-2006
Mensajes: 127
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Tiempo de espera agotado!!!

Hola el problema es que se caduca el tiempo de la consulta no de la session asi que tienes que utilizar este comando

DSBCommand.CommandTimeuot= 1800 ' es en segundos este tiempo

saludos

Danny
  #3 (permalink)  
Antiguo 09/03/2007, 12:22
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Tiempo de espera agotado!!!

Hola dannyjsm!!!...te agradezco mucho que me hayas respondido...... pense que me iba a quedar sin respuesta... ...de hecho tienes razon...el problema es que se caduca el tiempo de la consulta porque lo mismo me pasa al ejecutarla en el sql...y yo pensé que la instruccion

<% Server.ScriptTimeOut = 1800 %>

ayudaba a evitar ese problema...pero mas bien la instruccion que ayuda a esto es la que me indicas... ...pero yo no sabia...y es lo bueno de contar con su ayuda... ...la probaré y te aviso si me funcionó...mil gracias!!!
  #4 (permalink)  
Antiguo 09/03/2007, 12:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Tiempo de espera agotado!!!

Veo que usas una consulta entre 3 servidores, podría ayudarte que le quitaras la carga al OleDb e hicieras directamente en un procedimiento almacenado dicha consulta. Digo, lo que puedas optimizar es bueno.

Saludos
  #5 (permalink)  
Antiguo 09/03/2007, 12:45
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Tiempo de espera agotado!!!

Hola Myakire!!!...agradezco muchisimo tu comentario...asi es...la consulta la hago entre 3 servidores...((aunque mi coneccion no la tengo por OLDB si no mas bien por ADODB...deberia cambiarla??))...y como dices quiza ayudaria generando un procedimiento almacenado de la misma...pero no domino el tema... ...pero pedire ayuda y a intentarlo.... ...gracias!!!
  #6 (permalink)  
Antiguo 09/03/2007, 13:07
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Tiempo de espera agotado!!!

OK, es facil.

En el administrador coorporativo de SQL Server, a al apartado Procedimientos Almacenados y con botón derecho sereccionas "Nuevo"

Ahi colocas algo como esto:

Código:
CREATE PROCEDURE sp_NomProy_sConsulta
@vFecha1 datetime,
@vFecha2 datetime
AS
          SELECT dbo.E1.CODE, dbo.E1.DIGITO, MSap_1.Medida, MSap_1.Linea, dbo.CAT_TRADE.EQUIPO, dbo.CAT_TRADE.SIDEWALL AS SIDEWALL, AVG(dbo.E1.WEIGHT) AS PPROM, 
                         dbo.E1PESO.PESO AS PESTAND, COUNT(dbo.E1.CODE) AS CANTIDAD, dbo.ES1.WAREHOUSE, MIN(dbo.E1.FECHC) AS FECHMIN 
          FROM dbo.CAT_TRADE INNER JOIN dbo.E1 ON dbo.CAT_TRADE.DIGITO = dbo.E1.DIGITO LEFT OUTER JOIN dbo.E1PESO ON dbo.E1.CODE = dbo.E1PESO.CODE  
                      RIGHT OUTER JOIN [SERV-BCODE].Rast.dbo.opUnicos opUnicos_1 LEFT OUTER JOIN SERV_MONITOREO.Monitoreo.dbo.MSAP MSap_1 ON opUnicos_1.CodigoC = MSap_1.CodigoC ON 
                      dbo.E1.IDETIQ = opUnicos_1.IdEtiq 
         WHERE (dbo.E1.FECHC BETWEEN @vFecha1 and @vFecha2
         GROUP BY dbo.E1.CODE, MSap_1.Medida, dbo.E1.WAREHOUSE, MSap_1.Linea, dbo.E1.DIGITO, dbo.CAT_TRADE.EQUIPO, dbo.CAT_TRADE.SIDEWALL, dbo.E1PESO.PESO 
         HAVING (dbo.E1.CODE > '0') AND (dbo.E1.WAREHOUSE = 1) 
         ORDER BY dbo.E1.CODE, dbo.E1.DIGITO, MSap_1.Medida, MSap_1.Linea
Esa es tu consulta "transformada" en un SP.

Ahora solo debes llamarla así:

rsRecordsetNo2.Open "Exec sp_NomProy_sConsulta '" & vFecha1 & "', '"& vFecha2 & "'", objConn,2,2

Claro que el nombre del procedimiento lo puedes cambiar. Yo les coloco el prefijo sp seguido del mnemonico del proyecto, luego una letra que me indica si es Select, Update, Delete, Insert, etc y al final su nombre

Otra cosa, el rsRecordsetNo2.Requery vuelve a ejecutar la consulta, y no debes de colocarlo enseguida del .Open, sino cuando quieres actualizar el cursor para traerse datos nuevos insertados/actualizados por otro usuario.

Y si, si te recomendaría que cambiaras el DSNLess por OleDb:

ConnString = "Provider=SQLOLEDB.1;Data Source=servidor;Initial Catalog=SERVIDOR;User Id=userTmp;Password=123;"


Saludos
  #7 (permalink)  
Antiguo 09/03/2007, 14:08
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Re: Tiempo de espera agotado!!!

OK Myakire...mil gracias... ...suponiendo que el SP tiene el nombre que sugieres...asi quedaria bien mi codigo...con las sugerencias que me diste:

Código:
<%
	'ESTOS REQUEST.FORM SON LOS NOMBRES DE LOS CAMPOS DE FORM DE LA PAGINA ANTERIOR
	if not isdate(Request.Form("dia1")) and isdate(Request.Form("mes1")) and isdate(Request.Form("year1")) then 
	Response.Redirect "InicioA_SistemP_Diario.asp"
	end if

	vdia1= (Request.Form("dia1"))
	vmes1= (Request.Form("mes1"))
	vyear1= (Request.Form("year1"))
	
	vFecha1= vmes1 & "/" & vdia1 & "/" & vyear1 & " " & "00:00"
	vFecha2= vmes1 & "/" & vdia1 & "/" & vyear1 & " " & "23:59"
	
	
	'Conección con la BD
	ConnString = "Provider=SQLOLEDB.1;Data Source=SERV-AUT;Initial Catalog=Rssql;User Id=sa;Password=sa;"
	
	
	'Crear tabla temporal
	Set rsTest = Server.CreateObject("ADODB.Recordset")
	
	
	'Ligamos la tabla temporal a la vista de la BD
	rsTest.Open "Exec sp_NomProy_sConsulta '" & vFecha1 & "', '"& vFecha2 & "'", objConn,2,2

	
	'Abre tabla temporal
	rsTest.ActiveConnection = objConn
	rsTest.Open strSQL_N, objConn,2,2
	rsTest.Requery 
	
	
	'*** CANTIDAD TOTAL ***
	Set rsRecordsetNo2 = Server.CreateObject("ADODB.Recordset")
	strSQL_Nunmero2 = "SELECT COUNT(CODE) AS TOTAL FROM E1 WHERE FECHC >='" & vFecha1 & "' AND FECHC <='" & vFecha2 & "' AND (CODE > '0') AND (WAREHOUSE = 1)"
	
	'Abre tabla temporal
	rsRecordsetNo2.ActiveConnection = objConn
	rsRecordsetNo2.Open strSQL_Nunmero2, objConn,2,2
	rsRecordsetNo2.Requery

%>
  #8 (permalink)  
Antiguo 09/03/2007, 14:12
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Tiempo de espera agotado!!!

Ok, pero la pregunta es ..... notas mejoría en el rendimiento?

PD. Veo que sigues haciendo el requery ...... hay alguna razón para ello?
  #9 (permalink)  
Antiguo 09/03/2007, 14:27
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Tiempo de espera agotado!!!

Mira lo que pasa es que en estos momentos no tengo acceso a la aplicacion...tengo el codigo en mi pc...pero no tengo manera de probarlo porque no tengo los otros servidores...por eso edite el codigo y te lo mostré para ver si no cometi un error y ya posteriormente cuando tenga acceso a los otros servidores ponerlo en el servidor que tiene la aplicacion y probarlo...entonces no estoy segura si por el cambio que tu me indicas requiere quitar el requery!!!...
  #10 (permalink)  
Antiguo 09/03/2007, 15:26
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Tiempo de espera agotado!!!

De hecho, los requerys no tienen razón de ser para mi ahí donde estan.
  #11 (permalink)  
Antiguo 09/03/2007, 16:47
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Re: Tiempo de espera agotado!!!

ok...es que yo no estoy segura si deba o no estar el resquery...sugerencias?
  #12 (permalink)  
Antiguo 11/03/2007, 09:06
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Tiempo de espera agotado!!!

Sugerencia: Quítalos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:49.