I SQL Server kan du använda sp_update_jobstep
lagrad procedur för att ändra ett befintligt jobbsteg för ett SQL Server Agent-jobb.
När du skapar ett SQL Server Agent-jobb skapar du ett eller flera jobbsteg för det jobbet. sp_update_jobstep
proceduren låter dig uppdatera ett specifikt jobbsteg oberoende av det faktiska jobbet eller andra jobbsteg.
Exempel
I det här exemplet skapar vi ett jobb med ett jobbsteg, sedan använder vi sp_update_jobstep
för att ändra jobbsteget.
Skapa jobbet
Skapa först jobbet:
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BackupMoviesDB',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
GO
EXEC sp_add_jobstep
@job_name = N'BackupMoviesDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
GO
EXEC sp_add_schedule
@schedule_name = N'Run_Sat_5AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 050000;
GO
EXEC sp_attach_schedule
@job_name = N'BackupMoviesDB',
@schedule_name = N'Run_Sat_5AM';
GO
EXEC sp_add_jobserver
@job_name = N'BackupMoviesDB';
GO
Ovanstående kod använder fem lagrade procedurer, men sp_add_jobstep
proceduren är den enda som innehåller detaljerna som kan ändras med sp_update_jobstep
. De andra procedurerna har sina egna matchande "uppdaterings"-procedurer (som sp_update_job
och sp_update_schedule
).
Så bara för att vara tydlig är följande del den del som vi kan uppdatera med sp_update_jobstep
förfarande.
EXEC sp_add_jobstep
@job_name = N'BackupMoviesDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
I det här fallet gav vi sex argument när vi skapade jobbet. Förfarandet accepterar faktiskt mycket mer än så, men detta kommer att göra för våra syften.
Uppdatera jobbsteget
Vi kan nu använda sp_update_jobstep
för att ändra ovanstående jobbsteg.
EXEC sp_update_jobstep
@job_name = N'BackupMoviesDB',
@step_id = 1,
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 10,
@retry_interval = 5;
Det enda detta exempel gör är att öka försöken igen från 5
till 10
.
sp_update_jobstep
lagrad procedur ändrar endast de inställningar för vilka parametervärden tillhandahålls. Om en parameter utelämnas behålls den aktuella inställningen.
Därför kunde vi i det här fallet ha utelämnat de andra argumenten, så här:
EXEC sp_update_jobstep
@job_name = N'BackupMoviesDB',
@step_id = 1,
@retry_attempts = 10;
Kontrollera jobbet
Du kan använda sp_help_job
för att få information om SQL Server Agent-jobben i systemet.
Du kan använda det med eller utan parametrar, men för att få detaljerna om jobbsteget måste du ange jobbets namn eller ID.
Så här:
EXEC sp_help_job
@job_name = 'BackupMoviesDB';
Så här ser resultatet ut när du kör det i SSMS:
Här är ett exempel på koden när du använder ID:t:
EXEC sp_help_job
@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';
När du använder ID:t kan du utelämna parameternamnet om du vill.
Exempel:
EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';
Full syntax
Den fullständiga syntaxen för sp_update_jobstep
går så här:
sp_update_jobstep
{ [@job_id =] job_id
| [@job_name =] 'job_name' } ,
[@step_id =] step_id
[ , [@step_name =] 'step_name' ]
[ , [@subsystem =] 'subsystem' ]
[ , [@command =] 'command' ]
[ , [@additional_parameters =] 'parameters' ]
[ , [@cmdexec_success_code =] success_code ]
[ , [@on_success_action =] success_action ]
[ , [@on_success_step_id =] success_step_id ]
[ , [@on_fail_action =] fail_action ]
[ , [@on_fail_step_id =] fail_step_id ]
[ , [@server =] 'server' ]
[ , [@database_name =] 'database' ]
[ , [@database_user_name =] 'user' ]
[ , [@retry_attempts =] retry_attempts ]
[ , [@retry_interval =] retry_interval ]
[ , [@os_run_priority =] run_priority ]
[ , [@output_file_name =] 'file_name' ]
[ , [@flags =] flags ]
[ , { [ @proxy_id = ] proxy_id
| [ @proxy_name = ] 'proxy_name' }
Se Microsofts dokumentation för sp_update_jobstep
för en förklaring av varje parameter, såväl som de värden som var och en accepterar.
Observera att uppdatering av ett jobbsteg ökar jobbversionsnumret.