W SQL Server możesz użyć sp_update_jobstep
procedura składowana do modyfikowania istniejącego kroku zadania zadania SQL Server Agent.
Podczas tworzenia zadania SQL Server Agent, tworzysz jeden lub więcej kroków zadania dla tego zadania. sp_update_jobstep
procedura umożliwia aktualizację określonego etapu pracy niezależnie od aktualnej pracy lub jakichkolwiek innych etapów pracy.
Przykład
W tym przykładzie tworzymy zadanie z jednym krokiem zadania, a następnie używamy sp_update_jobstep
aby zmodyfikować etap zadania.
Utwórz zadanie
Najpierw utwórz zadanie:
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
Powyższy kod używa pięciu procedur składowanych, ale sp_add_jobstep
procedura jest jedyną, która zawiera szczegóły, które można zmienić za pomocą sp_update_jobstep
. Inne procedury mają swoje własne pasujące procedury „aktualizacji” (takie jak sp_update_job
i sp_update_schedule
).
Żeby było jasne, następna część to ta część, którą możemy zaktualizować za pomocą sp_update_jobstep
procedura.
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;
W tym przypadku podczas tworzenia pracy podaliśmy sześć argumentów. Procedura faktycznie akceptuje znacznie więcej, ale to wystarczy dla naszych celów.
Zaktualizuj etap zadania
Możemy teraz użyć sp_update_jobstep
aby zmodyfikować powyższy krok zadania.
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;
Jedyne, co robi ten przykład, to zwiększenie liczby prób ponownych prób z 5
do 10
.
sp_update_jobstep
procedura składowana zmienia tylko te ustawienia, dla których podane są wartości parametrów. Jeśli parametr zostanie pominięty, bieżące ustawienie zostanie zachowane.
Dlatego w tym przypadku mogliśmy pominąć inne argumenty, takie jak:
EXEC sp_update_jobstep
@job_name = N'BackupMoviesDB',
@step_id = 1,
@retry_attempts = 10;
Sprawdź pracę
Możesz użyć sp_help_job
aby uzyskać informacje o zadaniach SQL Server Agent w systemie.
Możesz go używać z parametrami lub bez, ale aby uzyskać szczegóły etapu zadania, musisz podać nazwę lub identyfikator zadania.
Tak:
EXEC sp_help_job
@job_name = 'BackupMoviesDB';
Oto, jak wygląda wynik podczas wykonywania go w programie SSMS:
Oto przykład kodu przy użyciu identyfikatora:
EXEC sp_help_job
@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';
Używając identyfikatora, możesz pominąć nazwę parametru, jeśli chcesz.
Przykład:
EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';
Pełna składnia
Pełna składnia sp_update_jobstep
idzie tak:
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' }
Zobacz dokumentację Microsoft dla sp_update_jobstep
dla wyjaśnienia każdego parametru, a także wartości, które każdy akceptuje.
Pamiętaj, że aktualizacja kroku zadania zwiększa numer wersji zadania.