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;