Timeout expired

24/11/2006 - 18:06 por Ma. Rosario | Informe spam
Hola a todos, el día de hoy se me presentó un problema con una pequeña
aplicación que yo desarrollé en .NET la cual sólo extrae información de
unas vistas, el día de ayer estuvo funcionando correctamente pero el día
de hoy se presento el error justo despues de haber reiniciado la máquina
que tiene instalado el SQL Server
el error que se me muestra mi aplicación es el siguiente:

Timeout expired. The timeout period elapsed prior to completion of the
operation or the server is not responding.


Cabe señalar que tengo varias vistas y las consultas hacia estas vistas
las hago por rango de fechas y sólo se me presenta este error con una
vista en particular, lo curioso aqui, es que si la consulta la hago de
un rango de fechas de aproximadamente 1 mes si me devuelve información,
pero si incremento el rango de fechas a 2 meses aproximadamente me
arroja el error antes mencionado, ustedes me diran que quiza son
demasiados registros devueltos y la verdad no son tantos ya que en un
rango de 2 meses se me deben de devolver 1250 registros aprox, y cabe
mencionar que antes del reinicio se regresaban muchisimos mas de estos
sin ningún error, también como mencionaba las consultas a las otras
vistas no me presentan ningún error y basicamente uso la misma
estructura encuanto al diseño de las vista (son similares)los store
procedure que utilizo para obtener la información.

Espero y alguien me pueda ayudar al respecto, ya que copié un respaldo
de la bd a mi máquina y aquí si puede ejecutar todas las consultas sin
que me marque el error Timeout expired.

Muchas gracias.

Aqui un ejemplo de Store Procedure que utilizo

CREATE PROCEDURE Viajes
@fecha1 as datetime,
@fecha2 as datetime
AS
BEGIN
SELECT * FROM v_Viajes
WHERE f_prog_ini_viaje>=@fecha1 and f_prog_ini_viaje<@fecha2
END

Lo único que cambia en cada sp es el nombre de la vista y lógicamente
los valores de los parámetros.

Saludos.

Preguntas similare

Leer las respuestas

#1 Maxi
24/11/2006 - 18:45 | Informe spam
Hola, te comento que no siempre hay una relacion entre la cantidad de
registros y lo lento o no de una query, lo que hace sql server es usar
indices (si los hay claro) de lo contrario estara haciendo un table_scan.
Por todo lo que has mencionado me da la sensacion que el indice si existe
pero que con un rango X de registros no lo esta usando, como comentaste que
has reiniciado el servidor puede ser un problema de estadisticas con lo cual
te recomiendo en primer medida que las actualices y luego que revises el
plan de ejecucion (si no te das cuenta lo puedes poner aqui y te ayudamos)
para ver porque se pone tan lenta esa query. En tu query veo que haces un
Select * con lo cual no es una muy buena idea que digamos asi que tambien te
recomiendo solo poner los campos que realmente vas a usar.
Con respecto al Timeout en si deberias tambien configurar en tu aplicacion
ese tiempo, por lo general esta en 20s


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Ma. Rosario" escribió en el mensaje
news:ekfunr%
Hola a todos, el día de hoy se me presentó un problema con una pequeña
aplicación que yo desarrollé en .NET la cual sólo extrae información de
unas vistas, el día de ayer estuvo funcionando correctamente pero el día
de hoy se presento el error justo despues de haber reiniciado la máquina
que tiene instalado el SQL Server
el error que se me muestra mi aplicación es el siguiente:

Timeout expired. The timeout period elapsed prior to completion of the
operation or the server is not responding.


Cabe señalar que tengo varias vistas y las consultas hacia estas vistas
las hago por rango de fechas y sólo se me presenta este error con una
vista en particular, lo curioso aqui, es que si la consulta la hago de un
rango de fechas de aproximadamente 1 mes si me devuelve información, pero
si incremento el rango de fechas a 2 meses aproximadamente me arroja el
error antes mencionado, ustedes me diran que quiza son demasiados
registros devueltos y la verdad no son tantos ya que en un rango de 2
meses se me deben de devolver 1250 registros aprox, y cabe mencionar que
antes del reinicio se regresaban muchisimos mas de estos sin ningún error,
también como mencionaba las consultas a las otras vistas no me presentan
ningún error y basicamente uso la misma estructura encuanto al diseño de
las vista (son similares)los store procedure que utilizo para obtener la
información.

Espero y alguien me pueda ayudar al respecto, ya que copié un respaldo de
la bd a mi máquina y aquí si puede ejecutar todas las consultas sin que me
marque el error Timeout expired.

Muchas gracias.

Aqui un ejemplo de Store Procedure que utilizo

CREATE PROCEDURE Viajes
@fecha1 as datetime,
@fecha2 as datetime
AS
BEGIN
SELECT * FROM v_Viajes
WHERE f_prog_ini_viaje>=@fecha1 and f_prog_ini_viaje<@fecha2
END

Lo único que cambia en cada sp es el nombre de la vista y lógicamente los
valores de los parámetros.

Saludos.
Respuesta Responder a este mensaje
#2 PSaille
24/11/2006 - 18:47 | Informe spam
Comentas que reiniciaron el Server, pero.. ¿Verificaron que levantara el
servicio de SQL?.

"Ma. Rosario" escribió en el mensaje
news:ekfunr%
Hola a todos, el día de hoy se me presentó un problema con una pequeña
aplicación que yo desarrollé en .NET la cual sólo extrae información de
unas vistas, el día de ayer estuvo funcionando correctamente pero el día
de hoy se presento el error justo despues de haber reiniciado la máquina
que tiene instalado el SQL Server
el error que se me muestra mi aplicación es el siguiente:

Timeout expired. The timeout period elapsed prior to completion of the
operation or the server is not responding.


Cabe señalar que tengo varias vistas y las consultas hacia estas vistas
las hago por rango de fechas y sólo se me presenta este error con una
vista en particular, lo curioso aqui, es que si la consulta la hago de un
rango de fechas de aproximadamente 1 mes si me devuelve información, pero
si incremento el rango de fechas a 2 meses aproximadamente me arroja el
error antes mencionado, ustedes me diran que quiza son demasiados
registros devueltos y la verdad no son tantos ya que en un rango de 2
meses se me deben de devolver 1250 registros aprox, y cabe mencionar que
antes del reinicio se regresaban muchisimos mas de estos sin ningún error,
también como mencionaba las consultas a las otras vistas no me presentan
ningún error y basicamente uso la misma estructura encuanto al diseño de
las vista (son similares)los store procedure que utilizo para obtener la
información.

Espero y alguien me pueda ayudar al respecto, ya que copié un respaldo de
la bd a mi máquina y aquí si puede ejecutar todas las consultas sin que me
marque el error Timeout expired.

Muchas gracias.

Aqui un ejemplo de Store Procedure que utilizo

CREATE PROCEDURE Viajes
@fecha1 as datetime,
@fecha2 as datetime
AS
BEGIN
SELECT * FROM v_Viajes
WHERE f_prog_ini_viaje>=@fecha1 and f_prog_ini_viaje<@fecha2
END

Lo único que cambia en cada sp es el nombre de la vista y lógicamente los
valores de los parámetros.

Saludos.
Respuesta Responder a este mensaje
#3 Ma. Rosario
24/11/2006 - 18:53 | Informe spam
PSaille escribió:
Comentas que reiniciaron el Server, pero.. ¿Verificaron que levantara el
servicio de SQL?.

"Ma. Rosario" escribió en el mensaje
news:ekfunr%
Hola a todos, el día de hoy se me presentó un problema con una pequeña
aplicación que yo desarrollé en .NET la cual sólo extrae información de
unas vistas, el día de ayer estuvo funcionando correctamente pero el día
de hoy se presento el error justo despues de haber reiniciado la máquina
que tiene instalado el SQL Server
el error que se me muestra mi aplicación es el siguiente:

Timeout expired. The timeout period elapsed prior to completion of the
operation or the server is not responding.


Cabe señalar que tengo varias vistas y las consultas hacia estas vistas
las hago por rango de fechas y sólo se me presenta este error con una
vista en particular, lo curioso aqui, es que si la consulta la hago de un
rango de fechas de aproximadamente 1 mes si me devuelve información, pero
si incremento el rango de fechas a 2 meses aproximadamente me arroja el
error antes mencionado, ustedes me diran que quiza son demasiados
registros devueltos y la verdad no son tantos ya que en un rango de 2
meses se me deben de devolver 1250 registros aprox, y cabe mencionar que
antes del reinicio se regresaban muchisimos mas de estos sin ningún error,
también como mencionaba las consultas a las otras vistas no me presentan
ningún error y basicamente uso la misma estructura encuanto al diseño de
las vista (son similares)los store procedure que utilizo para obtener la
información.

Espero y alguien me pueda ayudar al respecto, ya que copié un respaldo de
la bd a mi máquina y aquí si puede ejecutar todas las consultas sin que me
marque el error Timeout expired.

Muchas gracias.

Aqui un ejemplo de Store Procedure que utilizo

CREATE PROCEDURE Viajes
@fecha1 as datetime,
@fecha2 as datetime
AS
BEGIN
SELECT * FROM v_Viajes
WHERE f_prog_ini_viaje>=@fecha1 and f_prog_ini_viaje<@fecha2
END

Lo único que cambia en cada sp es el nombre de la vista y lógicamente los
valores de los parámetros.

Saludos.






Si verifico que estuviera levantado el servicio de SQL, de hecho, como
les comentaba en esa misma aplicación extraigo información de otras
vistas las cuales me devuelven información correctamente, aqui sólo se
me presenta este error con una vista en particular y cuando hago una
consulta de un rango de fechas mayor a 2 meses es cuando me arroja el error.
Respuesta Responder a este mensaje
#4 Ma. Rosario
24/11/2006 - 19:22 | Informe spam
Que tal Maxi, gracias por tratar de ayudarme, mira, deja te pongo la
consulta con la cual genero la vista

SELECT v.status_viaje, v.no_viaje, g.num_guia, v.id_unidad AS unidad,
v.id_remolque1 AS tanque1, v.id_remolque2 AS
tanque2,p.id_personal,p.nombre AS operador,
R.id_ruta,R.desc_ruta AS ruta, R.kms_ruta, tr.desc_tipo_ruta
as tipo_ruta, p1.desc_plaza AS origen, p2.desc_plaza AS destino,
rg.descripcion_producto AS producto, v.fecha_fin_viaje,
v.fecha_real_viaje, v.fecha_real_fin_viaje, v.f_prog_ini_viaje,
v.f_prog_fin_viaje, v.no_liquidacion AS liquidacion, v.kms_real as
kms_considerados_liq,
v.no_ejes_viaje AS ejes, v.rend_esperado as
rend_considerado_liq, v.lts_empresa as litros, sum
(ta.monto_anticipo+ta.monto_anticipo_iva)as anticipo
FROM dbo.trafico_viaje v INNER JOIN
dbo.trafico_ruta R ON R.id_ruta = v.id_ruta INNER JOIN
dbo.trafico_tipo_ruta tr ON R.id_tipo_ruta = tr.id_tipo_ruta
LEFT OUTER JOIN
dbo.trafico_anticipo ta ON ta.no_viaje = v.no_viaje LEFT OUTER JOIN
dbo.personal_personal p ON v.id_personal = p.id_personal LEFT
OUTER JOIN
dbo.trafico_plaza p1 ON v.id_origen = p1.id_plaza LEFT OUTER JOIN
dbo.trafico_plaza p2 ON v.id_destino = p2.id_plaza LEFT OUTER
JOIN
dbo.trafico_guia g ON v.no_viaje = g.no_viaje LEFT OUTER JOIN
dbo.trafico_renglon_guia rg ON g.no_guia = rg.no_guia AND
rg.consecutivo = 1
WHERE v.status_viaje <> 'B'
Group by v.status_viaje, v.no_viaje,g.num_guia,v.id_unidad,
v.id_remolque1, v.id_remolque2,
p.id_personal,p.nombre, r.id_ruta,r.desc_ruta,
r.kms_ruta,tr.desc_tipo_ruta,p1.desc_plaza,
p2.desc_plaza,rg.descripcion_producto, v.fecha_fin_viaje,
v.fecha_real_viaje,v.fecha_real_fin_viaje,
v.f_prog_ini_viaje, v.f_prog_fin_viaje, v.no_liquidacion,
v.kms_real, v.no_ejes_viaje, v.rend_esperado,
v.lts_empresa

Como veras es un poco extensa, y sobre los campos también te comento que
los debo de mostrar todos por eso uso el Select *, también te comento
que ya incremente el timeout en el ConnectionTimeout de la cadena de
conexión de mi aplicacióna 120 segundos y ni así.

Y respecto a lo de las estadísticas es un tema que desconosco si me
pudieras ayudar te lo agradecería muchñisimo

Saludos.

Maxi escribió:
Hola, te comento que no siempre hay una relacion entre la cantidad de
registros y lo lento o no de una query, lo que hace sql server es usar
indices (si los hay claro) de lo contrario estara haciendo un table_scan.
Por todo lo que has mencionado me da la sensacion que el indice si existe
pero que con un rango X de registros no lo esta usando, como comentaste que
has reiniciado el servidor puede ser un problema de estadisticas con lo cual
te recomiendo en primer medida que las actualices y luego que revises el
plan de ejecucion (si no te das cuenta lo puedes poner aqui y te ayudamos)
para ver porque se pone tan lenta esa query. En tu query veo que haces un
Select * con lo cual no es una muy buena idea que digamos asi que tambien te
recomiendo solo poner los campos que realmente vas a usar.
Con respecto al Timeout en si deberias tambien configurar en tu aplicacion
ese tiempo, por lo general esta en 20s

Respuesta Responder a este mensaje
#5 Ma. Rosario
24/11/2006 - 20:15 | Informe spam
Que tal Maxi, ya encontré la solución a mi problema.

La cual sólo fué ejecutar el siguiente script en mi base de datos

exec sp_dboption '<dbname>', 'autoshrink', 'true'
GO

Saludos y muchas gracias por tu valiosa ayuda.


Maxi escribió:
Hola, te comento que no siempre hay una relacion entre la cantidad de
registros y lo lento o no de una query, lo que hace sql server es usar
indices (si los hay claro) de lo contrario estara haciendo un table_scan.
Por todo lo que has mencionado me da la sensacion que el indice si existe
pero que con un rango X de registros no lo esta usando, como comentaste que
has reiniciado el servidor puede ser un problema de estadisticas con lo cual
te recomiendo en primer medida que las actualices y luego que revises el
plan de ejecucion (si no te das cuenta lo puedes poner aqui y te ayudamos)
para ver porque se pone tan lenta esa query. En tu query veo que haces un
Select * con lo cual no es una muy buena idea que digamos asi que tambien te
recomiendo solo poner los campos que realmente vas a usar.
Con respecto al Timeout en si deberias tambien configurar en tu aplicacion
ese tiempo, por lo general esta en 20s

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida