sql >> Base de Datos >  >> RDS >> Sqlserver

4 formas de obtener una lista de programaciones en el Agente SQL Server (T-SQL)

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 con sysjobschedules y sysjobs_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.