Plány SQL Server Agent lze spravovat nezávisle na úlohách. To znamená, že můžete plán aktualizovat přímo bez aktualizace samotné úlohy.
Můžete to udělat pomocí sp_update_schedule
uložená procedura.
Příklad
Vytvořte plán
Nejprve vytvořte plán:
EXEC sp_add_schedule
@schedule_name = N'Weekly_Sat_1AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 10000;
Nyní můžeme použít sp_update_schedule
upravit tento plán.
Aktualizujte plán
Zde je příklad aktualizace rozvrhu, který jsme právě vytvořili.
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;
V tomto případě jsem změnil název plánu, stejně jako interval frekvence a čas zahájení.
Všimněte si, že sp_update_schedule
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že některá z našich nastavení zůstala stejná (konkrétně @freq_type
a @freq_recurrence_factor
), mohli jsme tyto parametry úplně vynechat.
Takhle:
EXEC sp_update_schedule
@name = N'Weekly_Sat_1AM',
@new_name = N'Weekly_Sun_4AM',
@freq_interval = 1,
@active_start_time = 40000;
Zakázat plán
Můžete nastavit @enabled
na 0
zakázat plán.
Příklad:
EXEC sp_update_schedule
@name = N'Weekly_Sun_4AM',
@new_name = N'Weekly_Sun_4AM (DISABLED)',
@enabled = 0;
V tomto příkladu jsem také změnil název, aby bylo zřejmé, že úloha je zakázána.
Zkontrolujte plán
Můžete použít sp_help_schedule
pro zobrazení aktuálního nastavení plánu.
Můžete jej použít s parametry nebo bez nich. Při použití bez parametrů vrátí všechny plány.
EXEC sp_help_schedule;
Pokud chcete vidět pouze podrobnosti jednoho plánu, můžete zadat název nebo ID plánu.
Asi takto:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM';
I když při zadávání jména si budete muset zapamatovat příjmení, které jste dali rozvrhu. V našem případě, pokud spustíme tento postup po předchozím příkladu (když jsme deaktivovali plán), museli bychom udělat toto:
EXEC sp_help_schedule
@schedule_name = 'Weekly_Sun_4AM (DISABLED)';
ID plánu však zůstává konstantní, takže jej můžete použít bez ohledu na název plánu.
Příklad:
EXEC sp_help_schedule
@schedule_id = 16;
Při použití ID můžete název parametru vynechat, chcete-li.
Příklad:
EXEC sp_help_schedule 16;
Co se stane s úlohami, které používají upravený rozvrh?
Všechny úlohy, které používají plán, okamžitě použijí nová nastavení. Změna plánu však nezastaví úlohy, které právě běží.
Úplná syntaxe
Úplná syntaxe sp_update_schedule
vypadá takto:
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 ]
Viz dokumentaci společnosti Microsoft pro sp_update_schedule
pro vysvětlení každého parametru a také hodnot, které každý přijímá.