V SQL Server můžete použít sp_update_jobstep
uložená procedura k úpravě existujícího kroku úlohy SQL Server Agent.
Když vytvoříte úlohu SQL Server Agent, vytvoříte pro tuto úlohu jeden nebo více kroků úlohy. sp_update_jobstep
procedura vám umožňuje aktualizovat konkrétní krok úlohy nezávisle na skutečné úloze nebo jakýchkoli jiných krocích úlohy.
Příklad
V tomto příkladu vytvoříme úlohu s jedním krokem úlohy a poté použijeme sp_update_jobstep
upravit krok úlohy.
Vytvořte úlohu
Nejprve vytvořte úlohu:
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
Výše uvedený kód používá pět uložených procedur, ale sp_add_jobstep
postup je jediný, který obsahuje podrobnosti, které lze změnit pomocí sp_update_jobstep
. Ostatní procedury mají své vlastní odpovídající „aktualizační“ procedury (např. sp_update_job
a sp_update_schedule
).
Aby bylo jasno, následující část je část, kterou můžeme aktualizovat pomocí sp_update_jobstep
postup.
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;
V tomto případě jsme při vytváření úlohy poskytli šest argumentů. Postup ve skutečnosti akceptuje mnohem více, ale pro naše účely to bude stačit.
Aktualizujte krok úlohy
Nyní můžeme použít sp_update_jobstep
upravit výše uvedený krok úlohy.
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;
Jediná věc, kterou tento příklad dělá, je zvýšení počtu pokusů o opakování z 5
až 10
.
sp_update_jobstep
uložená procedura změní pouze ta nastavení, pro která jsou dodány hodnoty parametrů. Pokud je parametr vynechán, aktuální nastavení zůstane zachováno.
Proto jsme v tomto případě mohli vynechat ostatní argumenty, jako je tento:
EXEC sp_update_jobstep
@job_name = N'BackupMoviesDB',
@step_id = 1,
@retry_attempts = 10;
Zkontrolujte úlohu
Můžete použít sp_help_job
získat informace o úlohách SQL Server Agent v systému.
Můžete ji použít s parametry nebo bez nich, ale abyste získali podrobnosti o kroku úlohy, musíte zadat název nebo ID úlohy.
Asi takto:
EXEC sp_help_job
@job_name = 'BackupMoviesDB';
Takto vypadá výsledek při jeho spuštění v SSMS:
Zde je příklad kódu při použití ID:
EXEC sp_help_job
@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';
Při použití ID můžete název parametru vynechat, chcete-li.
Příklad:
EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';
Úplná syntaxe
Úplná syntaxe sp_update_jobstep
vypadá takto:
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' }
Viz dokumentaci společnosti Microsoft pro sp_update_jobstep
pro vysvětlení každého parametru a také hodnot, které každý přijímá.
Všimněte si, že aktualizace kroku úlohy zvyšuje číslo verze úlohy.