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.