Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So führen Sie einen SQL Server-Agent-Auftrag mit T-SQL aus

Wenn Sie zum ersten Mal einen SQL Server-Agent-Auftrag erstellen, sollten Sie einen kurzen Test durchführen, um festzustellen, ob er tatsächlich ohne Probleme ausgeführt wird.

Dies ist ziemlich einfach, wenn Sie die SSMS-GUI verwenden, aber wie machen Sie es in T-SQL?

Antwort:Der sp_start_job gespeicherte Prozedur.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

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

In diesem Fall habe ich einen Job namens BackupKrankyKranesDB ausgeführt .

Die Prozedur gibt keine Ergebnismengen zurück. Wenn Sie es jedoch in SSMS ausführen, sehen Sie möglicherweise eine Meldung wie diese:

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

Parameter

Sie können auch die Parameternamen angeben. In diesem Fall hätte ich Folgendes tun können:

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

Sie können entweder den Jobnamen oder die Job-ID angeben (aber nicht beides). Die Job-ID ist eine eindeutige Kennung mit einem Standardwert von NULL .

Daher hätten wir alternativ Folgendes tun können:

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

Das ist die Job-ID des obigen Jobs. Offensichtlich müssen Sie die ID des Jobs verwenden, den Sie ausführen müssen. Sie können den sp_help_job verwenden gespeicherte Prozedur zum Abrufen der Job-ID.

Die Syntax

Die eigentliche Syntax sieht so aus:

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]

Siehe sp_start_job auf der Microsoft-Website für eine Erläuterung jedes Arguments.

Auftragsverlauf anzeigen

Nachdem wir den Job ausgeführt haben, können wir jetzt sp_help_jobhistory verwenden um zu überprüfen, ob es zum Auftragsverlauf hinzugefügt wurde:

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

Mit @mode = 'FULL' sorgt dafür, dass wir genauere Informationen erhalten.

Folgendes habe ich nach dem Ausführen des Jobs erhalten:

Siehe sp_help_jobhistory Weitere Informationen zu diesem gespeicherten Verfahren finden Sie auf der Microsoft-Website.

Weitere Optionen zum Zurückgeben des Jobverlaufs finden Sie auch unter 4 Möglichkeiten, den SQL Server-Auftragsverlauf abzurufen.