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

Rollback a jobs mal ejecutados.

Estas en el tema de Rollback a jobs mal ejecutados. en el foro de SQL Server en Foros del Web. Buenas tardes, tengo una consulta.. actualmente estoy trabajando con JOBS, y tengo una duda... se pueden hacer rollback del job si esque un paso de ...
  #1 (permalink)  
Antiguo 17/02/2015, 13:02
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 9 meses
Puntos: 1
Rollback a jobs mal ejecutados.

Buenas tardes,

tengo una consulta.. actualmente estoy trabajando con JOBS, y tengo una duda... se pueden hacer rollback del job si esque un paso de ellos se ejecuta incorrectamente?

por ejemplo: tengo un job con 10 pasos y digamos que en el paso 5 ocurrió un error, ahora mismo lo que hace es lanzarme el error pero no se borra lo que se ejecuto en los 4 pasos anteriores, como podría hacer para ejecutar un rollback y regrese al estado anterior antes de ejecutar el job... y me mande una alerta.

Tengo la costumbre que buscar en internet antes de consultarles para tener una idea del tema.. y la verdad sobre esto no encontré mucho con profundidad... me recomiendan usar SSIS pero lo que sucede esque estoy usando ejecusion de backup como uno de los pasos :&

Atento a sus comentarios.

Saludos,
  #2 (permalink)  
Antiguo 17/02/2015, 13:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Rollback a jobs mal ejecutados.

y si manejas transacciones, y el commit tran lo haces en el ultimo paso?? algo como esto:


Código SQL:
Ver original
  1. Step 1
  2. BEGIN tran
  3.  
  4. step 2
  5. BEGIN tran1
  6. IF fails
  7. ROLLBACK tran
  8. ROLLBACK tran1
  9.  
  10. step 3
  11. BEGIN tran2
  12. IF fails
  13. ROLLBACK tran
  14. ROLLBACK tran1
  15. ROLLBACK tran2
  16. ELSE
  17. commit tran
  18. commit tran1
  19. commit tran2

algo asi, no se si se pueda seria investigarlo, o lo otro que puedes hacer es que guardes tus cambios en alguna tabla temporal y una vez que se complete todo el proceso actualizar o insertar donde se deba :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 17/02/2015, 13:13
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 9 meses
Puntos: 1
Exclamación Respuesta: Rollback a jobs mal ejecutados.

Cita:
Iniciado por Libras Ver Mensaje
y si manejas transacciones, y el commit tran lo haces en el ultimo paso?? algo como esto:


Código SQL:
Ver original
  1. Step 1
  2. BEGIN tran
  3.  
  4. step 2
  5. BEGIN tran1
  6. IF fails
  7. ROLLBACK tran
  8. ROLLBACK tran1
  9.  
  10. step 3
  11. BEGIN tran2
  12. IF fails
  13. ROLLBACK tran
  14. ROLLBACK tran1
  15. ROLLBACK tran2
  16. ELSE
  17. commit tran
  18. commit tran1
  19. commit tran2

algo asi, no se si se pueda seria investigarlo, o lo otro que puedes hacer es que guardes tus cambios en alguna tabla temporal y una vez que se complete todo el proceso actualizar o insertar donde se deba :P
Estuve pensando en una solución similar.. el detalle esque no sabia como hacerlo :/

aprovechando que pasaria si la ejecución del job lo ingreso dentro de un procedimiento almacenado y dentro de este un begin tran?


Si el job falla haría un rollback pero... a qué ?.
  #4 (permalink)  
Antiguo 17/02/2015, 13:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Rollback a jobs mal ejecutados.

las transacciones se manejan por nombres asi que puedes decir que haga el rollback a una transaccion especifica, aqui el problema serian los bloqueos e interbloqueos que generarias ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 17/02/2015, 13:41
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Rollback a jobs mal ejecutados.

Cita:
Iniciado por Libras Ver Mensaje
las transacciones se manejan por nombres asi que puedes decir que haga el rollback a una transaccion especifica, aqui el problema serian los bloqueos e interbloqueos que generarias ;)
Claro entiendo, entonces quedaria intentar de la primera forma pero no tengo ni idea de como establecerlo de esa manera :(

Una duda, entonces los nombres de los tran se pueden manejar como variables globales?
  #6 (permalink)  
Antiguo 17/02/2015, 14:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Rollback a jobs mal ejecutados.

variables globales??? la programacion en base de datos es muy diferente a la programacion normal, prueba haciendo una transaccion en sql server en una ventana, no le des commit, despues abre otra ventana y haz commit a la primer transaccion veras que la primer ventana aparece el mensaje query executed.....siendo que ejecutaste el commit en otra "sesion"
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 17/02/2015, 16:28
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Rollback a jobs mal ejecutados.

Cita:
Iniciado por Libras Ver Mensaje
variables globales??? la programacion en base de datos es muy diferente a la programacion normal, prueba haciendo una transaccion en sql server en una ventana, no le des commit, despues abre otra ventana y haz commit a la primer transaccion veras que la primer ventana aparece el mensaje query executed.....siendo que ejecutaste el commit en otra "sesion"
Acabo de probarlo, gracias por el dato.

en cuanto a mi consulta es muy probable que pueda usar lo que sugieres (uso de transacciones en cada paso). el problema esta en que esto funcionaria si todos mis pasos son en base a -Transact SQL .... pero no es así, yo tengo pasos que incluyen paquetes SSIS (Ya que doy uso de scripts en Visual) y no hay forma de ingresarlo dentro de un tran.

imagino cosas como poder la ejecucion del dtexec dentro de un procdimiento con un tran... pero creo que no funcionará :(
  #8 (permalink)  
Antiguo 17/02/2015, 16:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Rollback a jobs mal ejecutados.

ahora la pregunta del millon que quieres hacer que requiera validacion de todos los pasos antes de hacer cambios a la base?? porque no cambias tus jobs para que primero se valide todo lo que necesitas y una vez que tengas esa validacion hacer los insert/updates???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 18/02/2015, 12:59
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Rollback a jobs mal ejecutados.

Cita:
Iniciado por Libras Ver Mensaje
ahora la pregunta del millon que quieres hacer que requiera validacion de todos los pasos antes de hacer cambios a la base?? porque no cambias tus jobs para que primero se valide todo lo que necesitas y una vez que tengas esa validacion hacer los insert/updates???
Si, lo hago de esa forma.. lo que sucede es que lo quiero implementar como una forma de asegurar que más adelante no se presente algo que no haya contemplado... y por las ganas de aprender claro esta.

Etiquetas: jobs, rollback
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 10:29.