En este artículo, presento cuatro opciones para usar T-SQL para devolver las programaciones que se adjuntan a un trabajo del Agente SQL Server.
Las opciones
Puede usar las siguientes opciones de T-SQL para devolver las programaciones de un trabajo del Agente SQL Server:
- Opción 1 :Ejecute el
sp_help_job
procedimiento almacenado. - Opción 2 :Ejecute el
sp_help_schedule
procedimiento almacenado. - Opción 3 :Ejecute el
sp_help_jobschedule
procedimiento almacenado. - Opción 4 :consulta los
sysschedules
tabla (y únala consysjobschedules
ysysjobs_view
).
Todas estas opciones residen en msdb base de datos y, por lo tanto, deben ejecutarse en esa base de datos. Puede hacerlo cambiando a msdb base de datos primero, o calificando el objeto apropiadamente (por ejemplo, msdb.dbo.sysschedules
).
Opción 1:El sp_help_job
Procedimiento almacenado
Cuando llamas a sp_help_job
sin ningún argumento, simplemente devuelve una lista de trabajos. Pero cuando pasa el nombre o la identificación de un trabajo, enumera los detalles de ese trabajo, incluidos sus horarios.
He aquí un ejemplo:
USE msdb;
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Resultado:

Esto enumera el trabajo, así como los pasos del trabajo, los horarios y los servidores de destino. En este caso, hay dos horarios adjuntos al trabajo.
Aquí hay un ejemplo del código cuando se usa la ID:
EXEC sp_help_job
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Al usar la ID, puede omitir el nombre del parámetro si lo desea.
Ejemplo:
EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Sintaxis
La sintaxis completa de sp_help_job
va así:
sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
Consulte la documentación de Microsoft para sp_help_job
para una explicación de cada parámetro, así como los valores que acepta cada uno.
Opción 2:El sp_help_schedule
Procedimiento almacenado
El sp_help_schedule
El procedimiento almacenado está diseñado específicamente para devolver programaciones.
Si lo ejecuta sin pasar ningún argumento, devolverá todos los horarios en la instancia:
EXEC sp_help_schedule;
Para obtener información sobre un horario específico, pase el nombre del horario o su ID:
EXEC sp_help_schedule
@schedule_name = 'Run_Sat_6AM';
Aunque sp_help_schedule
no devuelve horarios para un trabajo específico, puede usarlo para devolver solo los horarios que están adjuntos a un trabajo.
El @attached_schedules_only
el parámetro es bit , con un valor predeterminado de 0
, lo que significa que devuelve horarios adjuntos y no adjuntos. Pasando un valor de 1
lo limita a los horarios adjuntos.
Ejemplo:
EXEC sp_help_schedule
@attached_schedules_only = 1;
Otra cosa que puedes hacer es usar @include_description
parámetro para especificar si incluir o no la descripción de la programación en el conjunto de resultados.
Ver Uso de sp_help_schedule
en SQL Server para obtener más información y ejemplos.
Opción 3:El sp_help_jobschedule
Procedimiento almacenado
El sp_help_jobschedule
El procedimiento almacenado devuelve información sobre la programación de trabajos.
Ejemplo:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Esto devuelve una lista de programaciones que se adjuntan al trabajo especificado.
También puede pasar el ID o el nombre de un horario para devolver solo ese horario.
Cuando llamas a sp_help_jobschedule
, debe proporcionar el nombre del trabajo o su ID (pero no ambos), o el ID de programación. También puede pasar el schedule_name
pero solo en combinación con el ID del trabajo o su nombre.
La combinación aceptada de argumentos es un poco complicada. Ver Uso de sp_help_jobschedule
en SQL Server para obtener una explicación más detallada y más ejemplos.
Opción 4:Los sysschedules
mesa (y otros)
Puede consultar los sysschedules
y únala con tablas como sysjobschedules
y sysjobs_view
para devolver una lista de trabajos y sus horarios asociados.
Ejemplo:
SELECT
jv.name,
jv.description,
s.schedule_id,
s.name,
s.freq_type,
s.freq_interval,
s.freq_subday_type,
s.freq_subday_interval,
js.next_run_date,
js.next_run_time
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobschedules js
ON jv.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules s
ON s.schedule_id = js.schedule_id
ORDER BY jv.name, s.name;
Resultado:

En este caso, utilicé combinaciones internas para devolver solo los horarios que tienen un trabajo asociado y viceversa.
Puede cambiar a combinaciones a la derecha para devolver todos los horarios, independientemente de si están adjuntos a un trabajo, o combinaciones a la izquierda para devolver todos los trabajos, independientemente de si tienen un horario adjunto. O puede usar uniones completas para simplemente devolver todo.