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

Come eseguire un processo di SQL Server Agent utilizzando T-SQL

Quando crei per la prima volta un processo di SQL Server Agent, potresti voler eseguire un rapido test per vedere se verrà effettivamente eseguito senza problemi.

Questo è abbastanza semplice quando si utilizza la GUI di SSMS, ma come si fa in T-SQL?

Risposta:Il sp_start_job procedura memorizzata.

Esempio

Ecco un esempio da dimostrare:

USE msdb;  
GO  
  
EXEC sp_start_job N'BackupKrankyKranesDB';
GO

In questo caso ho eseguito un lavoro chiamato BackupKrankyKranesDB .

La procedura non restituisce alcun set di risultati. Tuttavia, se lo esegui in SSMS, potresti visualizzare un messaggio come questo:

Job 'BackupKrankyKranesDB' started successfully.
 Completion time: 2020-12-13T19:54:18.3503521-08:00

Parametri

È anche possibile fornire i nomi dei parametri. In tal caso, avrei potuto fare questo:

USE msdb;  
GO  
  
EXEC sp_start_job @job_name = N'BackupKrankyKranesDB';
GO

È possibile fornire il nome del lavoro o l'ID lavoro (ma non entrambi). L'ID lavoro è un identificatore univoco con un valore predefinito di NULL .

Pertanto, avremmo potuto in alternativa fare questo:

USE msdb;  
GO  
  
EXEC sp_start_job @job_id = '4FAE7031-36E8-4934-81E6-0D561F375627';
GO

Questo è l'ID del lavoro di cui sopra. Ovviamente dovresti usare l'ID del lavoro che devi eseguire. Puoi usare il sp_help_job stored procedure per ottenere l'ID lavoro.

La sintassi

La sintassi effettiva è questa:

sp_start_job   
     {   [@job_name =] 'job_name'  
       | [@job_id =] job_id }  
     [ , [@error_flag =] error_flag]  
     [ , [@server_name =] 'server_name']  
     [ , [@step_name =] 'step_name']  
     [ , [@output_flag =] output_flag]

Vedi sp_start_job sul sito Web Microsoft per una spiegazione di ogni argomento.

Visualizza cronologia lavori

Ora che abbiamo eseguito il lavoro, ora possiamo usare sp_help_jobhistory per verificare che sia stato aggiunto alla cronologia dei lavori:

EXEC sp_help_jobhistory 
	@job_name = 'BackupKrankyKranesDB',
	@mode = 'FULL';

Usando @mode = 'FULL' assicura che otteniamo informazioni più dettagliate.

Ecco cosa ho ottenuto dopo aver eseguito il lavoro:

Vedi sp_help_jobhistory sul sito Web Microsoft per ulteriori informazioni su questa procedura memorizzata.

Vedi anche 4 modi per ottenere la cronologia dei processi di SQL Server per ulteriori opzioni per la restituzione della cronologia dei processi.