In SQL Server, il sp_help_jobschedule
stored procedure restituisce informazioni sulla pianificazione dei lavori.
Questo articolo fornisce una panoramica di questa stored procedure, inclusi esempi.
Sintassi
La sintassi ufficiale è questa:
sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }
[ , [ @schedule_name = ] 'schedule_name' ]
[ , [ @schedule_id = ] schedule_id ]
[ , [ @include_description = ] include_description ]
Quando chiami sp_help_jobschedule
, è necessario fornire il nome del lavoro o il relativo ID (ma non entrambi) o l'ID pianificazione. Puoi anche passare il nome della pianificazione, ma solo in combinazione con l'ID lavoro o il suo nome.
La combinazione accettata è un po' complicata. Fondamentalmente, funziona così:
Se schedule_id
è specificato, né job_id
né job_name
può essere specificato. Altrimenti, il job_id
o job_name
i parametri possono essere utilizzati con schedule_name
.
Tuttavia, non potrai utilizzare schedule_id
se una pianificazione è collegata a più lavori.
Nota che sp_help_jobschedule
si trova nel msdb database, quindi deve essere eseguito da lì. Puoi farlo passando a msdb database (ad es. con USE msdb
), o qualificando la procedura con il nome del database e lo schema (ad esempio msdb.dbo.sp_help_jobschedule
).
Esempio
Ecco un esempio per dimostrare come restituire tutte le pianificazioni allegate a un lavoro specifico:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Risultato:
Questo restituisce un elenco di pianificazioni allegate al lavoro specificato con @job_name
argomento.
In alternativa, avrei potuto passare il @job_id
:
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Ma in quel caso, non potevo usare @job_name
(o l'uno o l'altro).
Quando si utilizza l'ID lavoro, è possibile omettere il nome del parametro se lo si desidera:
EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Utilizzando il @schedule_id
Parametro
In alternativa puoi ottenere una pianificazione basata sul suo ID:
EXEC sp_help_jobschedule
@schedule_id = 15;
Funziona bene purché la pianificazione non sia collegata a più lavori.
Ecco cosa succede quando una pianificazione è collegata a più lavori:
EXEC sp_help_jobschedule
@schedule_id = 14;
Risultato:
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.
E anche se chiede di specificare il job_id
, se lo fai, dovrai rimuovere schedule_id
(come accennato, se passi un schedule_id
, non puoi includere il job_name
o job_id
).
Per dimostrarlo, se aggiungo semplicemente job_id
e mantieni il schedule_id
lì, ottengo il seguente errore.
EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
@schedule_id = 14;
Risultato:
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.
Includi la descrizione
Un'altra cosa che puoi fare è specificare se includere o meno la descrizione del programma.
Per impostazione predefinita, la descrizione non è inclusa nel set di risultati. In realtà, la schedule_description
la colonna è incluso, ma non contiene la descrizione, a meno che tu non la richieda esplicitamente. Se non lo richiedi, la schedule_description
la colonna mostra (Description not requested.)
.
Il @include_description
il parametro è bit , con un valore predefinito di 0
, il che significa che non mostra la descrizione. Passaggio di un valore di 1
comporta la visualizzazione della descrizione.
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest',
@include_description = 1;