PRINT 'JOBS QUE FALLARON EN SU ÚLTIMA EJECUCIÓN ' print '*****************************************' /* * Autor(es) : Felipe Donoso Bastías * Fecha de Creación : 12-11-2007 * Objetivo : Revisar los últimos errores que han arrojado * Los jobs en los últimas ejecuciones. */ SELECT j.name 'Nombre del job' , /* La Frecuencia de Ejecución: 1 = Once 4 = Daily 8 = Weekly 16 = Monthly 32 = Monthly relative 64 = When SQL Server */ CASE (CAST(js.freq_type AS NVARCHAR)) WHEN '1' THEN 'Una vez' WHEN '4' THEN 'Diariamente' WHEN '8' THEN 'Semanalmente' WHEN '16' THEN 'Mensualmente' WHEN '32' THEN 'Relativo Mensual' WHEN '64' THEN 'Al iniciar SQL Server (por Agente)' ELSE 'no determinado' END 'Frecuencia de Ejecución' , /* Los días de Ejecución del Job. Ej: Todos los días, Lunes, Martes, Jueves, Etc. */ CASE (CAST(js.freq_type AS NVARCHAR)) WHEN '1' THEN 'NULL' WHEN '4' THEN 'Todos los días' WHEN '16' THEN 'No determinado' WHEN '8' THEN /* If freq_type is 8 (weekly), the value is a bitmask indicating the days in which weekly schedules are run. The freq_interval values are: 1 = Sunday 2 = Monday 4 = Tuesday 8 = Wednesday 16 = Thursday 32 = Friday 64 = Saturday */ CASE (CAST(js.freq_interval AS NVARCHAR)) WHEN '1' THEN 'Domingo' WHEN '2' THEN 'Lunes' WHEN '4' THEN 'Martes' WHEN '8' THEN 'Miércoles' WHEN '16' THEN 'Jueves' WHEN '32' THEN 'Viernes' WHEN '64' THEN 'Sábado' ELSE 'No determinado' END WHEN '32' THEN /* If freq_type is 32 (monthly relative), freq_interval can be one of these values: 1 = Sunday 2 = Monday 3 = Tuesday 4 = Wednesday 5 = Thursday 6 = Friday 7 = Saturday 8 = Day 9 = Weekday 10 = Weekend day */ CASE (CAST(js.freq_interval AS NVARCHAR)) WHEN '1' THEN 'Domingo' WHEN '2' THEN 'Lunes' WHEN '3' THEN 'Martes' WHEN '4' THEN 'Miércoles' WHEN '5' THEN 'Jueves' WHEN '6' THEN 'Viernes' WHEN '7' THEN 'Sábado' WHEN '8' THEN 'Día' WHEN '9' THEN 'Día de la Semana' WHEN '10' THEN 'Día del fin de Semana' ELSE 'No Determinado' END END 'Días de Ejecución del Job' , /* Cuando el Job se ejecuta más de Una vez al día hay que conocer con que intervalo lo hace, si es por minutos, segundos u Horas. */ CASE (CAST(js.freq_subday_type AS NVARCHAR)) WHEN '1' THEN 'Sin Periocidad a la hora especificada' WHEN '2' THEN 'corre cada ' + CAST(js.freq_subday_interval AS NVARCHAR) + ' Segundo(s)' WHEN '4' THEN 'corre cada ' + CAST(js.freq_subday_interval AS NVARCHAR) + ' Minuto(s)' WHEN '8' THEN 'corre cada ' + CAST(js.freq_subday_interval AS NVARCHAR) + ' Hora(s)' ELSE 'no determinado' END 'Intervalo de Ejecución (Periocidad)' ,jh.step_id 'ID del Paso' ,jh.step_name 'Paso que ejecuta el job' ,CASE (CAST(jh.run_status AS NVARCHAR)) WHEN '0' THEN 'ERROR' WHEN '1' THEN 'CORRECTO' WHEN '2' THEN 'REINTENTO' WHEN '3' THEN 'CANCELADO' WHEN '4' THEN 'EN CURSO' ELSE 'no determinado' END 'Resultado Última ejecución' ,js.active_start_time 'Hora de ejecución normal (HHMMSS)' ,jh.run_duration 'Duracion última ejecución(HHMMSS)' ,jh.run_date 'Última fecha de ejecución' ,jh.run_time 'Hora en que Finaliza' ,jsteps.command 'Acción que ejecuta el step' ,jh.message FROM msdb..sysjobhistory AS jh ,msdb..sysjobs AS j ,msdb..sysjobschedules AS js ,msdb..sysjobservers AS jservers ,msdb..sysjobsteps AS jsteps WHERE /* Status of the job execution: 0 = Failed 1 = Succeeded 2 = Retry 3 = Canceled 4 = In progress */ jh.run_status = 0 AND j.job_id = jh.job_id AND j.job_id = js.job_id AND j.job_id = jservers.job_id AND j.job_id = jsteps.job_id AND jh.step_id = jsteps.step_id AND j.enabled = 1 -- GETDATE() - xx Este es el número de días hacia a trás para buscar errores AND cast(jh.run_date as varchar(20)) > GETDATE() - 14 ORDER BY jh.run_date DESC, jh.run_time DESC GO