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;