SQL Server Agent tidsplaner kan administreres uafhængigt af job. Det betyder, at du kan opdatere tidsplanen direkte uden at opdatere selve jobbet.
Du kan gøre dette med sp_update_schedule
gemt procedure.
Eksempel
Opret tidsplanen
Lad os først oprette en tidsplan:
EXEC sp_add_schedule
@schedule_name = N'Weekly_Sat_1AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 10000;
Vi kan nu bruge sp_update_schedule
for at ændre den tidsplan.
Opdater tidsplanen
Her er et eksempel på opdatering af den tidsplan, vi lige har oprettet.
EXEC sp_update_schedule
@name = N'Weekly_Sat_1AM',
@new_name = N'Weekly_Sun_4AM',
@freq_type = 8,
@freq_interval = 1,
@freq_recurrence_factor = 1,
@active_start_time = 40000;
I dette tilfælde ændrede jeg navnet på tidsplanen samt frekvensintervallet og starttidspunktet.
Bemærk at sp_update_schedule
ændrer kun de indstillinger, for hvilke parameterværdier er leveret. Hvis en parameter udelades, bibeholdes den aktuelle indstilling.
Derfor, da nogle af vores indstillinger forblev de samme (specifikt @freq_type
og @freq_recurrence_factor
), kunne vi have udeladt disse parametre helt.
Sådan:
EXEC sp_update_schedule
@name = N'Weekly_Sat_1AM',
@new_name = N'Weekly_Sun_4AM',
@freq_interval = 1,
@active_start_time = 40000;
Deaktiver en tidsplan
Du kan indstille @enabled
til 0
for at deaktivere en tidsplan.
Eksempel:
EXEC sp_update_schedule
@name = N'Weekly_Sun_4AM',
@new_name = N'Weekly_Sun_4AM (DISABLED)',
@enabled = 0;
I dette eksempel ændrede jeg også navnet for at gøre det tydeligt, at jobbet er deaktiveret.
Tjek skemaet
Du kan bruge sp_help_schedule
for at se de aktuelle indstillinger for en tidsplan.
Du kan bruge den med eller uden parametre. Når den bruges uden parametre, returnerer den alle tidsplaner.
EXEC sp_help_schedule;
Hvis du kun ønsker at se detaljerne for én tidsplan, kan du angive tidsplanens navn eller ID.
Sådan:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM';
Selvom du, når du angiver navnet, skal huske det efternavn, du gav tidsplanen. I vores tilfælde, hvis vi kører denne procedure efter det forrige eksempel (da vi deaktiverede tidsplanen), skulle vi gøre dette:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM (DISABLED)';
Tidsplanens ID forbliver dog konstant, så du kan bruge det uanset tidsplanens navn.
Eksempel:
EXEC sp_help_schedule
@schedule_id = 16;
Når du bruger ID'et, kan du udelade parameternavnet, hvis du ønsker det.
Eksempel:
EXEC sp_help_schedule 16;
Hvad sker der med job, der bruger den ændrede tidsplan?
Alle job, der bruger tidsplanen, bruger straks de nye indstillinger. Ændring af en tidsplan stopper dog ikke job, der kører i øjeblikket.
Fuld syntaks
Den fulde syntaks for sp_update_schedule
går sådan her:
sp_update_schedule
{ [ @schedule_id = ] schedule_id
| [ @name = ] 'schedule_name' }
[ , [ @new_name = ] new_name ]
[ , [ @enabled = ] enabled ]
[ , [ @freq_type = ] freq_type ]
[ , [ @freq_interval = ] freq_interval ]
[ , [ @freq_subday_type = ] freq_subday_type ]
[ , [ @freq_subday_interval = ] freq_subday_interval ]
[ , [ @freq_relative_interval = ] freq_relative_interval ]
[ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @active_start_time = ] active_start_time ]
[ , [ @active_end_time = ] active_end_time ]
[ , [ @owner_login_name = ] 'owner_login_name' ]
[ , [ @automatic_post =] automatic_post ]
Se Microsofts dokumentation for sp_update_schedule
for en forklaring af hver parameter, samt de værdier, som hver accepterer.