Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Utilizzo di sp_help_jobschedule in SQL Server

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_idjob_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;