sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man kör ett SQL Server Agent Job med T-SQL

När du först skapar ett SQL Server Agent-jobb, kanske du vill göra ett snabbtest för att se om det faktiskt kommer att köras utan problem.

Detta är ganska enkelt när du använder SSMS GUI, men hur gör du det i T-SQL?

Svar:sp_start_job lagrad procedur.

Exempel

Här är ett exempel att visa:

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

I det här fallet körde jag ett jobb som heter BackupKrankyKranesDB .

Proceduren returnerar inga resultatuppsättningar. Men om du kör det i SSMS kan du se ett meddelande så här:

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

Parametrar

Du kan också ange parameternamnen. I så fall kunde jag ha gjort så här:

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

Du kan ange antingen jobbnamnet eller jobb-ID (men inte båda). Jobb-ID:t är en uniqueidentifier med standardvärdet NULL .

Därför kunde vi alternativt ha gjort detta:

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

Det är jobb-ID för jobbet ovan. Självklart måste du använda ID:t för jobbet du behöver köra. Du kan använda sp_help_job lagrad procedur för att få jobb-ID.

Syntaxen

Den faktiska syntaxen ser ut så här:

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]

Se sp_start_job på Microsofts webbplats för en förklaring av varje argument.

Visa jobbhistorik

Nu när vi har kört jobbet kan vi nu använda sp_help_jobhistory för att kontrollera att den har lagts till i jobbhistoriken:

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

Använder @mode = 'FULL' ser till att vi får mer detaljerad information.

Det här är vad jag fick efter att ha kört jobbet:

Se sp_help_jobhistory på Microsofts webbplats för mer information om denna lagrade procedur.

Se även 4 sätt att få SQL Server Job History för fler alternativ för att returnera jobbhistorik.


  1. Det går inte att ansluta till Postgres via PHP men kan ansluta från kommandoraden och PgAdmin på annan maskin

  2. Importera MySQL-dump till PostgreSQL-databas

  3. SQL Server String eller binära data skulle trunkeras

  4. Hur ändrar jag db-schema till dbo