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

Reportar un Job cuando uno de sus pasos falla

Estas en el tema de Reportar un Job cuando uno de sus pasos falla en el foro de SQL Server en Foros del Web. Buenas compañeros. Tengo un problema. Tengo un Job programado en SqlServer 2012 que consta de varias tareas, hasta 7. El problema que tengo es que ...
  #1 (permalink)  
Antiguo 28/10/2015, 06:03
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta Reportar un Job cuando uno de sus pasos falla

Buenas compañeros. Tengo un problema.

Tengo un Job programado en SqlServer 2012 que consta de varias tareas, hasta 7.

El problema que tengo es que quiero hacer que si falla alguno de los Pasos, se envíe un Email, pero no quiero que se interrumpa el job. Es decir, que si falla el Paso 3 de los 7, se continue hasta el final, y únicamente al final, si alguno ha fallado se lance la notificación por Email.



El problema es que no logro hacer esto. Consigo que reporte el email si en caso de que falle el paso, le especifico que salga del job como Job Failed, pero en ese caso, deja de realizar los pasos siguientes. Y si le digo que en caso de error, pase al paso siguiente, al finalizar el job al completo, en el histórico se ve un Exclamación porque uno de sus pasos ha fallado, pero no lo reporta porque en la configuración no me deja especificarle el caso que quiero.



¿cómo puedo hacer esto? Gracias.
  #2 (permalink)  
Antiguo 28/10/2015, 08:24
 
Fecha de Ingreso: mayo-2015
Ubicación: Nicaragua, Diriamba
Mensajes: 48
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: Reportar un Job cuando uno de sus pasos falla

Dejame ver si entedi, quieres que si un paso falla que siga al otro hasta terminarlos todos y al final envie un correo de cual paso fallo?

Si ese es el caso (seria probar porque nunca lo he hecho ), en el managment studio, abre las propiedades del job, luego las propiedades de cada paso y en el panel izquierdo en la opcion "Advanced" donde esta la opcion "On failure action" elige ir al siguiente paso, asi aunque falle un paso ejecutara el siguiente, haz lo mismo con todos los pasos.
Luego deja las notificaciones en la opcion "When the Job Completes".

Espero haber entendido tu problema, si no has hecho lo que te comentel, pruebalo y nos avisas
  #3 (permalink)  
Antiguo 28/10/2015, 09:17
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Reportar un Job cuando uno de sus pasos falla

jajaja. Eso es lo primerito que hice.
Pero el problema está en que al decirle que pase al paso siguente, al final del job, para él no hay error, solo un Warning, y por lo tanto, no lanza la notificación por Email.

SQL no permite especificarle que considere fail el job cuando uno de sus pasos falla. O falla y se para (Entonces sí) o llega hasta el final pero entonces salvo que falle el último paso, no hay opción de decirle que se considere Fail.

Al final lo que conseguido, pero añadiendo un último paso que lo que hago es hacer una consulta TransSQL al histórico del job y consultar si alguno de sus pasos ha fallado. En caso afirmativo, lanzo Exception y entonces informa por email :)

Gracias por el aporte en cualquier caso
  #4 (permalink)  
Antiguo 28/10/2015, 10:25
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Reportar un Job cuando uno de sus pasos falla

Exacto !!, hay que darle la vuelta, agregas un ultimo paso, que analice que paso con tu job y envie la notificación correspondiente
Código SQL:
Ver original
  1. EXEC sp_send_dbmail
  2. @profile_name = 'your_current_db_mail_profile_name',
  3. @recipients = '[email protected]',
  4. @subject = 'Job steps output',
  5. @body = 'Status of job steps below.',
  6. @execute_query_database = 'msdb',
  7. @query = '
  8. select sj.name,sjh.step_name,
  9. case sjh.run_status
  10. when 0 then ''Failed''
  11. when 1 then ''Pass''
  12. when 2 then ''Retry''
  13. when 3 then ''Cancel''
  14. end as job_status
  15. from sysjobhistory sjh inner join sysjobs sj ON (sj.job_id=sjh.job_id )
  16. where run_date=convert(int,convert(varchar(8),getdate(),112))
  17. and sj.job_id=''enter-your-job-GUID-here''
  18. '
__________________
MCTS Isaias Islas

Etiquetas: falla, job, pasos, server, sql
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 18:35.