W SQL Server możesz użyć sp_update_job
procedura składowana do modyfikowania istniejącego zadania agenta SQL Server.
Przykład
W tym przykładzie tworzymy zadanie, a następnie używamy sp_update_job
aby zmodyfikować tę pracę.
Utwórz zadanie
Najpierw utwórz zadanie:
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BakMovies',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
GO
EXEC sp_add_jobstep
@job_name = N'BakMovies',
@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'BakMovies',
@schedule_name = N'Run_Sat_5AM';
GO
EXEC sp_add_jobserver
@job_name = N'BakMovies';
GO
Powyższy kod używa pięciu procedur składowanych, ale sp_update_job
procedura aktualizuje tylko te szczegóły, które zostały utworzone za pomocą sp_add_job
procedura. Inne procedury mają własne, dopasowane procedury „aktualizacji”.
Żeby było jasne, następna część to ta część, którą możemy zaktualizować za pomocą sp_update_job
procedura.
EXEC sp_add_job
@job_name = N'BakMovies',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
W tym przypadku podczas tworzenia pracy podaliśmy tylko trzy argumenty. Procedura faktycznie akceptuje znacznie więcej, ale jedynym wymaganym argumentem jest nazwa zadania.
Zaktualizuj zadanie
Możemy teraz użyć sp_update_job
aby zmodyfikować powyższe zadanie.
EXEC sp_update_job
@job_name = N'BakMovies',
@new_name = N'BackupMoviesDB',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
Jedyne, co robi ten przykład, to zmiana nazwy zadania.
sp_update_job
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ąć opis i nazwę kategorii:
EXEC sp_update_job
@job_name = N'BakMovies',
@new_name = N'BackupMoviesDB';
Wyłącz zadanie
Możesz wyłączyć zadanie, ustawiając @enabled
do 0
:
EXEC sp_update_job
@job_name = N'BackupMoviesDB',
@new_name = N'BackupMoviesDB (DISABLED)',
@enabled = 0;
W tym przykładzie zmieniłem również nazwę zadania, aby było jasne, że zadanie jest wyłączone.
Sprawdź pracę
Możesz użyć sp_help_job
aby wyświetlić bieżące ustawienia zadania.
Możesz go używać z parametrami lub bez. Gdy jest używany bez parametrów, zwraca wszystkie zadania.
EXEC sp_help_job;
Jeśli chcesz zobaczyć szczegóły tylko jednej pracy, możesz podać nazwę lub identyfikator pracy.
Tak:
EXEC sp_help_job
@job_name = 'BackupMoviesDB';
Oto, jak wygląda wynik podczas wykonywania go w programie SSMS:
Chociaż podając imię i nazwisko, musisz zapamiętać nazwisko, które nadałeś pracy. W naszym przypadku, jeśli uruchomimy tę procedurę po poprzednim przykładzie (kiedy wyłączyliśmy zadanie), musielibyśmy to zrobić:
EXEC sp_help_job
@job_name = 'BackupMoviesDB (DISABLED)';
Jednak identyfikator zadania pozostaje stały, więc możesz go użyć niezależnie od nazwy zadania.
Przykład:
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';
Co się dzieje z etapami pracy, harmonogramem itp.?
Modyfikowanie zadania nie narusza jego kroków ani informacji o harmonogramie. Kroki i harmonogram zadania pozostaną nienaruszone po wprowadzeniu jakichkolwiek modyfikacji.
Jeśli chcesz zmodyfikować kroki lub harmonogram, musisz użyć dla nich odpowiedniej procedury składowanej (na przykład użyj sp_update_schedule
aby zaktualizować swój harmonogram i sp_update_jobstep
aby zaktualizować swój etap pracy).
Pełna składnia
Pełna składnia sp_update_job
idzie tak:
sp_update_job [ @job_id =] job_id | [@job_name =] 'job_name'
[, [@new_name =] 'new_name' ]
[, [@enabled =] enabled ]
[, [@description =] 'description' ]
[, [@start_step_id =] step_id ]
[, [@category_name =] 'category' ]
[, [@owner_login_name =] 'login' ]
[, [@notify_level_eventlog =] eventlog_level ]
[, [@notify_level_email =] email_level ]
[, [@notify_level_netsend =] netsend_level ]
[, [@notify_level_page =] page_level ]
[, [@notify_email_operator_name =] 'operator_name' ]
[, [@notify_netsend_operator_name =] 'netsend_operator' ]
[, [@notify_page_operator_name =] 'page_operator' ]
[, [@delete_level =] delete_level ]
[, [@automatic_post =] automatic_post ]
Zobacz dokumentację Microsoft dla sp_update_job
dla wyjaśnienia każdego parametru, a także wartości, które każdy akceptuje.