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

Usando sp_help_jobschedule en SQL Server

En SQL Server, el sp_help_jobschedule El procedimiento almacenado devuelve información sobre la programación de trabajos.

Este artículo proporciona una descripción general de este procedimiento almacenado, incluidos ejemplos.

Sintaxis

La sintaxis oficial es así:

sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }  
     [ , [ @schedule_name = ] 'schedule_name' ]  
     [ , [ @schedule_id = ] schedule_id ]  
     [ , [ @include_description = ] include_description ]

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 nombre del programa, pero solo en combinación con el ID del trabajo o su nombre.

La combinación aceptada es un poco complicada. Básicamente, es así:

Si schedule_id se especifica, ni job_id ni job_name se puede especificar De lo contrario, el job_id o job_name los parámetros se pueden usar con schedule_name .

Sin embargo, no podrá usar el schedule_id si se adjunta una programación a varios trabajos.

Tenga en cuenta que sp_help_jobschedule está en el msdb base de datos, por lo que debe ejecutarse desde allí. Puede hacerlo cambiando a msdb base de datos (por ejemplo, con USE msdb ), o calificando el procedimiento con el nombre y el esquema de la base de datos (es decir, msdb.dbo.sp_help_jobschedule ).

Ejemplo

Aquí hay un ejemplo para demostrar cómo devolver todos los horarios adjuntos a un trabajo específico:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Resultado:

Esto devuelve una lista de programaciones que se adjuntan al trabajo especificado con @job_name argumento.

Alternativamente, podría haber pasado el @job_id :

EXEC sp_help_jobschedule
	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Pero en ese caso, no podría usar @job_name (es uno o el otro).

Al usar la identificación del trabajo, puede omitir el nombre del parámetro si lo desea:

EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Usando el @schedule_id Parámetro

Alternativamente, puede obtener un horario basado en su ID:

EXEC sp_help_jobschedule
	@schedule_id = 15;

Esto funciona bien siempre y cuando la programación no se adjunte a varios trabajos.

Esto es lo que sucede cuando se adjunta una programación a varios trabajos:

EXEC sp_help_jobschedule
	@schedule_id = 14;

Resultado:

Msg 14369, Level 16, State 1, Procedure sp_help_jobschedule, Line 69 [Batch Start Line 22]
 The schedule ID "14" is used by more than one job. Specify the job_id.

Y aunque pide especificar el job_id , si hace esto, deberá eliminar el schedule_id (como se mencionó, si pasa un schedule_id , no puede incluir el job_name o job_id ).

Para demostrar esto, si simplemente agrego el job_id y mantén el schedule_id ahí, me sale el siguiente error.

EXEC sp_help_jobschedule
	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
	@schedule_id = 14;

Resultado:

Msg 14273, Level 16, State 1, Procedure sp_help_jobschedule, Line 51 [Batch Start Line 22]
 You must provide either @job_id or @job_name (and, optionally, @schedule_name), or @schedule_id.

Incluya la Descripción

Otra cosa que puedes hacer es especificar si incluir o no la descripción del horario.

De forma predeterminada, la descripción no se incluye en el conjunto de resultados. En realidad, el schedule_description columna es incluido, pero no contiene la descripción, a menos que usted lo solicite explícitamente. Si no lo solicita, el schedule_description la columna muestra (Description not requested.) .

El @include_description el parámetro es bit , con un valor predeterminado de 0 , lo que significa que no muestra la descripción. Pasando un valor de 1 hace que se muestre la descripción.

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest',
	@include_description = 1;