sql >> Database >  >> RDS >> Sqlserver

Een SQL Server Agent-taak uitvoeren met T-SQL

Wanneer u voor het eerst een SQL Server Agent-taak maakt, wilt u misschien een snelle test doen om te zien of deze daadwerkelijk zonder problemen zal werken.

Dit is vrij eenvoudig als je de SSMS GUI gebruikt, maar hoe doe je dat in T-SQL?

Antwoord:De sp_start_job opgeslagen procedure.

Voorbeeld

Hier is een voorbeeld om te demonstreren:

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

In dit geval heb ik een taak uitgevoerd met de naam BackupKrankyKranesDB .

De procedure retourneert geen resultaatsets. Als u het echter in SSMS uitvoert, ziet u mogelijk een bericht als dit:

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

Parameters

U kunt ook de parameternamen opgeven. In dat geval had ik dit kunnen doen:

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

U kunt de taaknaam of de taak-ID opgeven (maar niet beide). De taak-ID is een unieke identificatie met een standaard van NULL .

Daarom hadden we dit ook als alternatief kunnen doen:

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

Dat is de taak-ID van de bovenstaande taak. Uiteraard moet u de ID gebruiken van de taak die u moet uitvoeren. U kunt de sp_help_job . gebruiken opgeslagen procedure om de taak-ID te krijgen.

De syntaxis

De eigenlijke syntaxis gaat als volgt:

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]

Zie sp_start_job op de Microsoft-website voor een uitleg van elk argument.

Vacaturegeschiedenis bekijken

Nu we de taak hebben uitgevoerd, kunnen we nu sp_help_jobhistory . gebruiken om te controleren of het is toegevoegd aan de taakgeschiedenis:

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

Met behulp van @mode = 'FULL' zorgt ervoor dat we meer gedetailleerde informatie krijgen.

Dit is wat ik kreeg nadat ik de taak had uitgevoerd:

Zie sp_help_jobhistory op de Microsoft-website voor meer informatie over deze opgeslagen procedure.

Zie ook 4 manieren om de taakgeschiedenis van SQL Server op te halen voor meer opties voor het retourneren van de taakgeschiedenis.


  1. Oracle Database TLS1.2 / SSL-verbinding met JDBC thin en JKS

  2. Verschil tussen datetime en timestamp in sqlserver?

  3. Transactie ROLLBACK gebruiken in SQL Server

  4. Wat is het juiste SQL-type om een ​​.Net Timespan met waarden> 24:00:00 op te slaan?