Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[ODBC SQL Server Driver]Terminó el tiempo de espera.

Estas en el tema de [ODBC SQL Server Driver]Terminó el tiempo de espera. en el foro de SQL Server en Foros del Web. El Problema es que lanzo una consulta y a los 30 seg me devuelve un error de time out la pagina he probado con Server.ScriptTimeout ...
  #1 (permalink)  
Antiguo 08/04/2009, 04:53
 
Fecha de Ingreso: enero-2009
Mensajes: 55
Antigüedad: 15 años, 3 meses
Puntos: 5
[ODBC SQL Server Driver]Terminó el tiempo de espera.

El Problema es que lanzo una consulta y a los 30 seg me devuelve un error de time out la pagina he probado con Server.ScriptTimeout coin 99990 segundos pero sigue devolviendo el error a los 30 segundos.
La consulta cuando la ejecuto sobre diseñador de consultas tarda mas de un minuto con los valores 'T.Fecha>='20090408'(formato de fecha AAAAMMDD) en cambio cuando pongo T.Fecha>='20090405' tarda 5 segundos y evidentemente al ser una fecha inferior devuelve mas registros no lo entiendo, ademas la consulta devora el 98% de la cpu, Utilizo ASP + Sql Server 2005
Os Anoto la consulta por si alguien tiene alguna sugerencia ...
Gracias

Select Num_Vuelo,R.Fecha,direccion_LLegada,direccion_Dest ino, TIPO_TRASLADO,
Hotel_Recogida,T.MODIFICADO_MENOS_48H, R.Operador, H.Hotel,H.Nombre_Abreviatura,
H.CP,H.CALLE,H.TELEFONO, R.Agente ,R.Viaje, R.PLazas ,T.CO_RESERVA, AEROPUERTO,
Nombre_HOTEL, DIRECCION_HOTEL, T.FECHA, CIUDAD, COMPANYA_AEREA, OPCION_ELEGIDA,
DIRECCION_HOTEL , hora_recogida, Opc_Faltan_Dat, Nombre_Companya,Siglas,
Ciudad_Proc_DesT as FViaje From Reservas_Traslados T left join Companyas_Aereas On
(Id_companya=Companya_Aerea) left join Reservas R On
(R.Co_Reserva COLLATE latin1_general_ci_ai = T.Co_Reserva COLLATE latin1_general_ci_ai
) left join Hotel H On (T.Hotel_Recogida=H.ID_hOTEL) WHERE T.Co_Reserva>'0'
And tipo_traslado='L' And T.fecha >='20090405' aND
(Opcion_Elegida='AH' Or Opcion_Elegida='HA') And T.Modificacion =
(Select Max(Modificacion) From REservas_Traslados Where Co_REserva=T.Co_Reserva And
Tipo_Traslado=T.Tipo_Traslado) And (R.Estado='A' Or R.Estado='AC')
Order By T.Fecha Asc , Ciudad Asc , T.HORA_RECOGIDA Asc
  #2 (permalink)  
Antiguo 08/04/2009, 07:20
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

Movido desde ASP 3

Pd. Tus tablas tienen índices?
Sobre qué campos?
  #3 (permalink)  
Antiguo 08/04/2009, 10:04
 
Fecha de Ingreso: enero-2009
Mensajes: 55
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

todas mis tablas tienen primary key algunas un id autonumerico y otras claves generadas por el sistema, sobre los Campos "Co_Reserva" en reservas, "ID_Hotel" en hoteles, y reserva traslados sobre "CO_Reserva + Tipo_Traslado + Modificacion".
Como me explico que si pongo T.Fecha>='20090408' tarda 2 mins en ejecutar la consulta y si escribo T.Fecha>='20090405' (formato'AAAAMMDD') Solo 5 segundos cuando devuelve incluso mas resultados al ser una fecha menor.

Aparte lo he puesto en Asp por que tambien queria saber como aumentar el tiempo de espera(aunque no se si es del Asp o de la BBDD) he probado con Server.ScriptTimeout = 180000 Y aumentando el tiempo de session del IIS a 210 seg pero aun asi no aguanta mas de 30 seg, para cualquier consulta
  #4 (permalink)  
Antiguo 08/04/2009, 10:51
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

OJO: INDICE <> LLAVE PRIMARIA

segundo, el error que te da no es ASP debido a que es el odbc quien dice que el tiempo de espera se agoto, no el IIS.
  #5 (permalink)  
Antiguo 08/04/2009, 11:21
 
Fecha de Ingreso: enero-2009
Mensajes: 55
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

Ninguna de las tablas tiene Indices de Texto , he probado en mi equipo de desarrollo para hacerlo en futuro pero no me convencia mucho lo de que el llenado sea programado en ved de ser inmediato con la insercion de cada registro(se que tambien se puede pero todavia no lo he probado), de todas formas eso sigue sin explicar que con un valor para mostrar mas registros como te comentaba >'20090405' tarde 5 segs y con otro mas REDUCIDO >'20090408' tarde 2 mins,
me imagino que si es un error de odbc pero donde puedo modificar ese valor para que sea mas amplio el tiempo de espera .

Gracias
  #6 (permalink)  
Antiguo 08/04/2009, 12:01
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

amigo, tiene un error de concepto, los indices o index no son lo mismo que INDEX de TEXO (que son los que se programan)

sobre la tabla, boton derecho, todas las tareas, administrar indices.

estos indices deben cohincidir con los que estan en el WHERE de tu consulta
  #7 (permalink)  
Antiguo 09/04/2009, 05:49
 
Fecha de Ingreso: enero-2009
Mensajes: 55
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

Los indices se crean automaticamente con la primary key , si puedo agregar mas indices en otros campos tu crees que esa sería la solucion para agilizar la consulta? sobre T.Fecha, Opcion_Elegida o cualquier campo sobre el haga una consulta , pero no serian indices unicos y no se sis explica lo la fecha anterior que devuelve mas rapido y mas resultados que la fecha actual , lo probaré
Gracias
  #8 (permalink)  
Antiguo 09/04/2009, 06:35
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

los indices siempre agilizan mas las consultas.

eso si debes tener presente que cuando se usan funciones para transformar un dato, los indices se dejan de usar.
ME explico.

si por ej tienes un campo fecha a la que le aplicas una transformacion para compararla con un dato que andas buscando, el indice de este campo no funciona.

ejemplo:

select * from tabla where transformacion(campo_fecha) = fecha_entregada

en este caso si es que tienes un indice en el campo_fecha, este no será usado ya que la funcion no se lo permitira. Aqui la funcion se aplicara a cada valor guardado en la tabla.

´para forzar el indice lo que debes hacer es lo siguiente

select * from tabla where campo_fecha = transformacion(fecha_entregada)

asi la funcion se aplica al valor entregado y el motor podra usar los indices de la tabla.



ademas te recomiendo que pruebes las consultas en el query analizer con un CONTROL K (consulta/mostrar plan de ejecuccion)

si es que en el diagrama te dice que estas haciendo un TABLE SCAN o un INDEX SCAN, entonces tu consulta no es optima. tus consultas siempre deberian ser del tipo INDEX SEEK para que esten optimizadas.


saludos!
  #9 (permalink)  
Antiguo 09/04/2009, 08:47
 
Fecha de Ingreso: enero-2009
Mensajes: 55
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

Para algunas consultas se nota un incremento de velocidad bastante notable pero en otras no. Hay algunas recomendaciones que deba seguir a la hora de crear indices , como se puede hacer consultas sobre la mayoria de los campos he creado bastantes indices por tabla no se si eso sera bueno si hay alguna limitacion o factores a tener en cuenta , ademas he dejado en todos las opciones por defecto es lo mismo si un campo es de tipo entero o cadena?

Gracias
  #10 (permalink)  
Antiguo 09/04/2009, 16:10
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

la recomendacion para la creacion de indices es la siguiente.

si un campo tiene un valor que se repite en todos los registros de la tabla: NO ES BUEN INDICE
si un campo tiene un valor que es distinto en todos los registros de la tabla: NO ES UN BUEN INDICE

Un buen indice esta dado por el grado medio de ocurrencia con respecto a todos los valores de la tabla. (creo que incluso hay una formula matematica , pero no me la se)

Es aqui donde tu tienes que usar tu criterio.

EJ:

EN EL MUNDO COTIDIANO, Si tienes una agenda telefonica, un buen indice es la primera letra del apellido o del nombre de la persona. ya que a traves de este indice, te es facil encontrar un numero telefonico de una persona a la que le sabes el nombre.

Si buscas el apellido PEREZ, debes de ir a la letra P y recien ahi te pones abuscar PEREZ dentro de esa pagina. Ese es un EXCELENTE INDICE!!! ya que no pones a buscar PEREZ en las primeras hojas de tu agenda, ya que sabes que ahi estan los contactos que empiezan con A.

Un mal indice seria tratar de encontrar un numero telefonico por el primero numero de telefono. ya que todos estarian en la pagina del 555-xxxxxxx. Ese es un PESIMO INDICE!

LA clave esta en analizar los datos y ver que campos son los mas propicios para hacer tus indices mas optimos.

  #11 (permalink)  
Antiguo 05/04/2011, 13:59
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

Mira este post esta bueno para tu ncesidad de aumentar el timeout del odbc

[URL="http://www.paginaswebseo.com/aumentar-incrementar-el-timeout-del-odbc-en-vb-net"]http://www.paginaswebseo.com/aumentar-incrementar-el-timeout-del-odbc-en-vb-net[/URL]
  #12 (permalink)  
Antiguo 05/04/2011, 14:54
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

¿Aunque el time-out fuera de 1 o 2 horas?, creo que no es un buen razonamiento.
__________________
MCTS Isaias Islas
  #13 (permalink)  
Antiguo 05/04/2011, 16:16
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

Cita:
Iniciado por koisis Ver Mensaje
todas mis tablas tienen primary key algunas un id autonumerico y otras claves generadas por el sistema, sobre los Campos "Co_Reserva" en reservas, "ID_Hotel" en hoteles, y reserva traslados sobre "CO_Reserva + Tipo_Traslado + Modificacion".
Como me explico que si pongo T.Fecha>='20090408' tarda 2 mins en ejecutar la consulta y si escribo T.Fecha>='20090405' (formato'AAAAMMDD') Solo 5 segundos cuando devuelve incluso mas resultados al ser una fecha menor.

Aparte lo he puesto en Asp por que tambien queria saber como aumentar el tiempo de espera(aunque no se si es del Asp o de la BBDD) he probado con Server.ScriptTimeout = 180000 Y aumentando el tiempo de session del IIS a 210 seg pero aun asi no aguanta mas de 30 seg, para cualquier consulta
Hola, lo de la fecha menor es algo a tener en cuenta y me hace pensar en el formato de campo fecha: ¿Te has cerciorado que todos los registros insertados tengan el mismo formato?
Es posible que alguno sea diferente e incluso NULL y haga que se demore...
Es sólo una posibilidad más...
Saludos
  #14 (permalink)  
Antiguo 05/04/2011, 16:32
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

ejbsoft, ¿Diferente formato?, pues a menos que sea un CHAR y este almacenando caracteres, en lugar de FECHAS.
__________________
MCTS Isaias Islas
  #15 (permalink)  
Antiguo 05/04/2011, 16:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: [ODBC SQL Server Driver]Terminó el tiempo de espera.

Es tan sólo una posibilidad, siempre se puede escapar algún registro por cualquier motivo (migraciones, alter tables, etc...)
Aparte de manejar ANSI en fechas, los NULL incluso, no se hasta que punto podrían demorar...
Pienso que se podría por lo menos el comprobar algún detalle de éstos.
¿No creeis?
Saludos
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 06:33.