Detener trabajo pasadas X horas

19/01/2007 - 10:43 por Pepe | Informe spam
Buenas,

tengo un trabajo programado mediante el SQL Server que a veces se queda
colgado.. y me encuentro que al dia siguiente no puedo detener el trabajo ni
desde el SQL Server ni desde ningun sitio, entonces debo reiniciar los
servicios del Agente de SQL y del Propio SQL server para que el trabajo se
finalice. Al finalizarlo asi tampoco deja entonces constancia en ningun
sitio del error y no tengo ni idea de por donde empezar a mirar para ver
porque el trabajo se ha quedado bloqueado, lo unico que veo en el visor de
eventos del SQL Server es que cuando se inician de nuevo los servicios se
deshace una transaccion pendiente. El trabajo funciona correctamente el 99%
de las ocasiones, pero eso no quita que cuando se produce ese 1% tenga que
interactuar con el servidor y solventar la situacion cuando preferiria que
fuera algo automatizado que funcione siempre.

Hay alguna manera de finalizar el trabajo si dura mas de X horas?? no me
preocupa tanto que no se realice un dia ( no es critico ) a que se quede
colgado...y si se pudiera especificar que pasadas X horas se detenga seria
la solucion hasta que consiga descubrir el motivo del 1% de los cuelgues.

En las tareas de windows puedes especificar que una tarea se detenga despues
de X horas pero en los trabajos del SQL no veo como se podria hacer.

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez
19/01/2007 - 19:47 | Informe spam
Que hace el trabajo.?

Si es una sola transaccion va a hacer un rollback y va a tardar.

Sugiero que actualices las estadisticas antes de ralizar el trabajo.

Saludos



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:

Buenas,

tengo un trabajo programado mediante el SQL Server que a veces se queda
colgado.. y me encuentro que al dia siguiente no puedo detener el trabajo
ni desde el SQL Server ni desde ningun sitio, entonces debo reiniciar los
servicios del Agente de SQL y del Propio SQL server para que el trabajo se
finalice. Al finalizarlo asi tampoco deja entonces constancia en ningun
sitio del error y no tengo ni idea de por donde empezar a mirar para ver
porque el trabajo se ha quedado bloqueado, lo unico que veo en el visor de
eventos del SQL Server es que cuando se inician de nuevo los servicios se
deshace una transaccion pendiente. El trabajo funciona correctamente el
99% de las ocasiones, pero eso no quita que cuando se produce ese 1% tenga
que interactuar con el servidor y solventar la situacion cuando preferiria
que fuera algo automatizado que funcione siempre.

Hay alguna manera de finalizar el trabajo si dura mas de X horas?? no me
preocupa tanto que no se realice un dia ( no es critico ) a que se quede
colgado...y si se pudiera especificar que pasadas X horas se detenga seria
la solucion hasta que consiga descubrir el motivo del 1% de los cuelgues.

En las tareas de windows puedes especificar que una tarea se detenga
despues de X horas pero en los trabajos del SQL no veo como se podria
hacer.



Respuesta Responder a este mensaje
#2 Pepe
22/01/2007 - 10:20 | Informe spam
Lanza una stored que tiene diferentes transacciones ( una por cada proceso
de traspaso de datos entre diferentes DBs ). El caso es que a veces se queda
congelado y no es siempre en el mismo punto sino que es aleatorio. Como
digo, debo encontrar el porque se congela pero por otro lado me gustaria
poder cancelar el proceso si despues de X horas no ha finalizado.




"Jose Mariano Alvarez"
escribió en el
mensaje news:ejYCdp$
Que hace el trabajo.?

Si es una sola transaccion va a hacer un rollback y va a tardar.

Sugiero que actualices las estadisticas antes de ralizar el trabajo.

Saludos



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:

Buenas,

tengo un trabajo programado mediante el SQL Server que a veces se queda
colgado.. y me encuentro que al dia siguiente no puedo detener el trabajo
ni desde el SQL Server ni desde ningun sitio, entonces debo reiniciar los
servicios del Agente de SQL y del Propio SQL server para que el trabajo
se finalice. Al finalizarlo asi tampoco deja entonces constancia en
ningun sitio del error y no tengo ni idea de por donde empezar a mirar
para ver porque el trabajo se ha quedado bloqueado, lo unico que veo en
el visor de eventos del SQL Server es que cuando se inician de nuevo los
servicios se deshace una transaccion pendiente. El trabajo funciona
correctamente el 99% de las ocasiones, pero eso no quita que cuando se
produce ese 1% tenga que interactuar con el servidor y solventar la
situacion cuando preferiria que fuera algo automatizado que funcione
siempre.

Hay alguna manera de finalizar el trabajo si dura mas de X horas?? no me
preocupa tanto que no se realice un dia ( no es critico ) a que se quede
colgado...y si se pudiera especificar que pasadas X horas se detenga
seria la solucion hasta que consiga descubrir el motivo del 1% de los
cuelgues.

En las tareas de windows puedes especificar que una tarea se detenga
despues de X horas pero en los trabajos del SQL no veo como se podria
hacer.







Respuesta Responder a este mensaje
#3 Jose Mariano Alvarez
22/01/2007 - 14:16 | Informe spam
Si una transaccion de muchos registros la divides en transacciones mas
pequeñas en un proceso reenganchable nunca vas a tener ese problema.

Cuando tengo esos casos uso un proceso que puede tomar un numero arbitrario
de registros de una tabla (pero no todos), los proceso dentro de una
transaccion y luego sigo con el siguiente lote. De esta forma cada lote
forma parte de una transaccion mas pequeña. El secreto es que los registros
solo se procesen una vez. Si no se procesen porque cancela hace el roolback
y lanzo de nuevo el proceso cuando quiero.

Por ejemplo para trasvasar registros con algun proceso por ejemplo de
sumarizacion uso un trigger de delete para tomar los registros a procesar y
borro @N registros usando SET Rowcount o TOP. Dentro del trigger realizo la
sumarizacion y la actualizacion de la tabla de destino.

esa es una forma pero hay muchas.




Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:
Lanza una stored que tiene diferentes transacciones ( una por cada
proceso de traspaso de datos entre diferentes DBs ). El caso es que a
veces se queda congelado y no es siempre en el mismo punto sino que es
aleatorio. Como digo, debo encontrar el porque se congela pero por otro
lado me gustaria poder cancelar el proceso si despues de X horas no ha
finalizado.




"Jose Mariano Alvarez"
escribió en el
mensaje news:ejYCdp$
Que hace el trabajo.?

Si es una sola transaccion va a hacer un rollback y va a tardar.

Sugiero que actualices las estadisticas antes de ralizar el trabajo.

Saludos



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:

Buenas,

tengo un trabajo programado mediante el SQL Server que a veces se queda
colgado.. y me encuentro que al dia siguiente no puedo detener el
trabajo ni desde el SQL Server ni desde ningun sitio, entonces debo
reiniciar los servicios del Agente de SQL y del Propio SQL server para
que el trabajo se finalice. Al finalizarlo asi tampoco deja entonces
constancia en ningun sitio del error y no tengo ni idea de por donde
empezar a mirar para ver porque el trabajo se ha quedado bloqueado, lo
unico que veo en el visor de eventos del SQL Server es que cuando se
inician de nuevo los servicios se deshace una transaccion pendiente. El
trabajo funciona correctamente el 99% de las ocasiones, pero eso no
quita que cuando se produce ese 1% tenga que interactuar con el servidor
y solventar la situacion cuando preferiria que fuera algo automatizado
que funcione siempre.

Hay alguna manera de finalizar el trabajo si dura mas de X horas?? no
me preocupa tanto que no se realice un dia ( no es critico ) a que se
quede colgado...y si se pudiera especificar que pasadas X horas se
detenga seria la solucion hasta que consiga descubrir el motivo del 1%
de los cuelgues.

En las tareas de windows puedes especificar que una tarea se detenga
despues de X horas pero en los trabajos del SQL no veo como se podria
hacer.











Respuesta Responder a este mensaje
#4 Pepe
22/01/2007 - 18:47 | Informe spam
El caso es algo diferente, te comento con algo mas de profundidad.

Mi proceso importa datos de otro servidor a traves de un Linked Server
mediante un Driver OLEDB de una tercera empresa. Mi proceso se divide en
varios su procesos, cada uno con su transaccion correspondiente y es lanzado
desde un Job que tengo programado. EL caso es que cuando llego por la mañana
me encuentro que el trabajo esta en modo "runing" y hasta que no detengo los
servicios y los inicio de nuevo este no se detiene por mas que intente
eliminar el proceso o hacerle un 'kill' . Se que el problema vendra por el
driver OLEDB o por el servidor del que obtengo los datos... por eso mi SQL
se queda colgando esperando recibir datos... lo que yo quisiera es que si
pasadas X horas sigue en "runing" se cancele deshaciendo la ultima
transaccion... puesto que seguramente ese proceso nunca finalizara.

Gracias de antemano por tu ayuda.


"Jose Mariano Alvarez"
escribió en el
mensaje news:
Si una transaccion de muchos registros la divides en transacciones mas
pequeñas en un proceso reenganchable nunca vas a tener ese problema.

Cuando tengo esos casos uso un proceso que puede tomar un numero
arbitrario de registros de una tabla (pero no todos), los proceso dentro
de una transaccion y luego sigo con el siguiente lote. De esta forma cada
lote forma parte de una transaccion mas pequeña. El secreto es que los
registros solo se procesen una vez. Si no se procesen porque cancela hace
el roolback y lanzo de nuevo el proceso cuando quiero.

Por ejemplo para trasvasar registros con algun proceso por ejemplo de
sumarizacion uso un trigger de delete para tomar los registros a procesar
y borro @N registros usando SET Rowcount o TOP. Dentro del trigger realizo
la sumarizacion y la actualizacion de la tabla de destino.

esa es una forma pero hay muchas.




Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:
Lanza una stored que tiene diferentes transacciones ( una por cada
proceso de traspaso de datos entre diferentes DBs ). El caso es que a
veces se queda congelado y no es siempre en el mismo punto sino que es
aleatorio. Como digo, debo encontrar el porque se congela pero por otro
lado me gustaria poder cancelar el proceso si despues de X horas no ha
finalizado.




"Jose Mariano Alvarez"
escribió en el
mensaje news:ejYCdp$
Que hace el trabajo.?

Si es una sola transaccion va a hacer un rollback y va a tardar.

Sugiero que actualices las estadisticas antes de ralizar el trabajo.

Saludos



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:

Buenas,

tengo un trabajo programado mediante el SQL Server que a veces se queda
colgado.. y me encuentro que al dia siguiente no puedo detener el
trabajo ni desde el SQL Server ni desde ningun sitio, entonces debo
reiniciar los servicios del Agente de SQL y del Propio SQL server para
que el trabajo se finalice. Al finalizarlo asi tampoco deja entonces
constancia en ningun sitio del error y no tengo ni idea de por donde
empezar a mirar para ver porque el trabajo se ha quedado bloqueado, lo
unico que veo en el visor de eventos del SQL Server es que cuando se
inician de nuevo los servicios se deshace una transaccion pendiente. El
trabajo funciona correctamente el 99% de las ocasiones, pero eso no
quita que cuando se produce ese 1% tenga que interactuar con el
servidor y solventar la situacion cuando preferiria que fuera algo
automatizado que funcione siempre.

Hay alguna manera de finalizar el trabajo si dura mas de X horas?? no
me preocupa tanto que no se realice un dia ( no es critico ) a que se
quede colgado...y si se pudiera especificar que pasadas X horas se
detenga seria la solucion hasta que consiga descubrir el motivo del 1%
de los cuelgues.

En las tareas de windows puedes especificar que una tarea se detenga
despues de X horas pero en los trabajos del SQL no veo como se podria
hacer.















Respuesta Responder a este mensaje
#5 Jose Mariano Alvarez
23/01/2007 - 01:47 | Informe spam
Seguramente debes tener el timeout en infinito.
Cambialo a 2 horas o el tiempo que te sirva

Por que no separas el movimiento de datos entre servers del proceso de
comparacion?

Suerte



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:u%
El caso es algo diferente, te comento con algo mas de profundidad.

Mi proceso importa datos de otro servidor a traves de un Linked Server
mediante un Driver OLEDB de una tercera empresa. Mi proceso se divide en
varios su procesos, cada uno con su transaccion correspondiente y es
lanzado desde un Job que tengo programado. EL caso es que cuando llego por
la mañana me encuentro que el trabajo esta en modo "runing" y hasta que no
detengo los servicios y los inicio de nuevo este no se detiene por mas que
intente eliminar el proceso o hacerle un 'kill' . Se que el problema
vendra por el driver OLEDB o por el servidor del que obtengo los datos...
por eso mi SQL se queda colgando esperando recibir datos... lo que yo
quisiera es que si pasadas X horas sigue en "runing" se cancele
deshaciendo la ultima transaccion... puesto que seguramente ese proceso
nunca finalizara.

Gracias de antemano por tu ayuda.


"Jose Mariano Alvarez"
escribió en el
mensaje news:
Si una transaccion de muchos registros la divides en transacciones mas
pequeñas en un proceso reenganchable nunca vas a tener ese problema.

Cuando tengo esos casos uso un proceso que puede tomar un numero
arbitrario de registros de una tabla (pero no todos), los proceso dentro
de una transaccion y luego sigo con el siguiente lote. De esta forma cada
lote forma parte de una transaccion mas pequeña. El secreto es que los
registros solo se procesen una vez. Si no se procesen porque cancela hace
el roolback y lanzo de nuevo el proceso cuando quiero.

Por ejemplo para trasvasar registros con algun proceso por ejemplo de
sumarizacion uso un trigger de delete para tomar los registros a procesar
y borro @N registros usando SET Rowcount o TOP. Dentro del trigger
realizo la sumarizacion y la actualizacion de la tabla de destino.

esa es una forma pero hay muchas.




Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:
Lanza una stored que tiene diferentes transacciones ( una por cada
proceso de traspaso de datos entre diferentes DBs ). El caso es que a
veces se queda congelado y no es siempre en el mismo punto sino que es
aleatorio. Como digo, debo encontrar el porque se congela pero por otro
lado me gustaria poder cancelar el proceso si despues de X horas no ha
finalizado.




"Jose Mariano Alvarez"
escribió en el
mensaje news:ejYCdp$
Que hace el trabajo.?

Si es una sola transaccion va a hacer un rollback y va a tardar.

Sugiero que actualices las estadisticas antes de ralizar el trabajo.

Saludos



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Pepe" wrote in message
news:

Buenas,

tengo un trabajo programado mediante el SQL Server que a veces se
queda colgado.. y me encuentro que al dia siguiente no puedo detener
el trabajo ni desde el SQL Server ni desde ningun sitio, entonces debo
reiniciar los servicios del Agente de SQL y del Propio SQL server para
que el trabajo se finalice. Al finalizarlo asi tampoco deja entonces
constancia en ningun sitio del error y no tengo ni idea de por donde
empezar a mirar para ver porque el trabajo se ha quedado bloqueado, lo
unico que veo en el visor de eventos del SQL Server es que cuando se
inician de nuevo los servicios se deshace una transaccion pendiente.
El trabajo funciona correctamente el 99% de las ocasiones, pero eso no
quita que cuando se produce ese 1% tenga que interactuar con el
servidor y solventar la situacion cuando preferiria que fuera algo
automatizado que funcione siempre.

Hay alguna manera de finalizar el trabajo si dura mas de X horas?? no
me preocupa tanto que no se realice un dia ( no es critico ) a que se
quede colgado...y si se pudiera especificar que pasadas X horas se
detenga seria la solucion hasta que consiga descubrir el motivo del 1%
de los cuelgues.

En las tareas de windows puedes especificar que una tarea se detenga
despues de X horas pero en los trabajos del SQL no veo como se podria
hacer.



















email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida