Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como executar um trabalho do SQL Server Agent usando T-SQL


Ao criar um trabalho do SQL Server Agent pela primeira vez, convém fazer um teste rápido para ver se ele realmente será executado sem problemas.

Isso é bastante direto ao usar a GUI do SSMS, mas como você faz isso no T-SQL?

Resposta:O sp_start_job procedimento armazenado.

Exemplo


Segue um exemplo para demonstrar:
USE msdb;  
GO  
  
EXEC sp_start_job N'BackupKrankyKranesDB';
GO

Nesse caso, executei um trabalho chamado BackupKrankyKranesDB .

O procedimento não retorna nenhum conjunto de resultados. No entanto, se você executá-lo no SSMS, poderá ver uma mensagem como esta:
Job 'BackupKrankyKranesDB' started successfully.
 Completion time: 2020-12-13T19:54:18.3503521-08:00

Parâmetros


Você também pode fornecer os nomes dos parâmetros. Nesse caso, eu poderia ter feito isso:
USE msdb;  
GO  
  
EXEC sp_start_job @job_name = N'BackupKrankyKranesDB';
GO

Você pode fornecer o nome do trabalho ou o ID do trabalho (mas não ambos). O ID do trabalho é um identificador exclusivo com um padrão de NULL .

Portanto, poderíamos ter feito isso alternativamente:
USE msdb;  
GO  
  
EXEC sp_start_job @job_id = '4FAE7031-36E8-4934-81E6-0D561F375627';
GO

Esse é o ID do trabalho acima. Obviamente, você precisaria usar o ID do trabalho que precisa executar. Você pode usar o sp_help_job procedimento armazenado para obter o ID do trabalho.

A Sintaxe


A sintaxe real é assim:
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]

Consulte sp_start_job no site da Microsoft para obter uma explicação de cada argumento.

Visualizar histórico de tarefas


Agora que executamos o trabalho, podemos usar sp_help_jobhistory para verificar se foi adicionado ao histórico do trabalho:
EXEC sp_help_jobhistory 
	@job_name = 'BackupKrankyKranesDB',
	@mode = 'FULL';

Usando @mode = 'FULL' garante que obtenhamos informações mais detalhadas.

Aqui está o que eu tenho depois de executar o trabalho:

Consulte sp_help_jobhistory no site da Microsoft para obter mais informações sobre esse procedimento armazenado.

Consulte também 4 maneiras de obter o histórico de trabalhos do SQL Server para obter mais opções para retornar o histórico de trabalhos.