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;