Когато използвате T-SQL, можете да използвате sp_add_schedule
съхранена процедура за добавяне на график на агент на SQL Server.
Тази процедура създава графика, но не го прикачва към никакви задачи. За да го прикачите към задание, трябва да използвате sp_attach_schedule
процедура.
Можете също да използвате sp_add_jobschedule
за да създадете графика и да го прикачите със същата процедура.
Пример за sp_add_schedule
Процедура
Ето пример, който използва sp_add_schedule
за да създадете нов график:
EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
Тази съхранена процедура приема повече аргументи, отколкото съм включил в този пример, но това са някои от по-често срещаните. Вижте таблиците по-долу за описание на приетите стойности.
@schedule_name
е задължителен аргумент, но останалите не са задължителни и имат настройки по подразбиране, в случай че не ги предоставите.
Вече можем да използваме sp_attach_schedule
за да прикачите този график към съществуваща работа:
EXEC sp_attach_schedule
@job_name = N'BackupPetHotelDB',
@schedule_name = N'RunDailyAM';
GO
Когато използвате sp_attach_schedule
, трябва да предоставите името на заданието или неговия идентификатор (но не и двете), както и името или идентификатора на графика (но не и двете).
Пример за sp_add_jobschedule
Процедура
Ето пример, който използва sp_add_jobschedule
за да създадете нов график и да го прикачите към задание, всичко наведнъж:
EXEC sp_add_jobschedule
@job_name = N'BackupMusicDB',
@name = N'Weekly_Sun_3AM',
@freq_type = 8,
@freq_interval = 1,
@freq_recurrence_factor = 1,
@active_start_time = 30000;
С тази процедура @job_name
Аргументът предоставя името на заданието и @name
аргумент предоставя името, което искате да дадете на графика.
Стойности на параметри
Начинът, по който данните за графика се съхраняват в msdb база данни го прави малко трудно, когато става въпрос за планиране на задачи с T-SQL.
Стойностите за дата/час се съхраняват като int видове. Типът на честотата се изразява като int , както и стойностите на интервала и различни други опции.
По-долу е даден преглед на приетите стойности за параметрите, предоставени в горните примери.
@freq_type
Този аргумент указва кога дадена работа трябва да бъде изпълнена. Той приема следните стойности:
Стойност | Описание |
---|---|
1 | Веднъж |
4 | Ежедневно |
8 | Седмично |
16 | Месечно |
32 | Месечно, спрямо freq_interval |
64 | Изпълнявайте при стартиране на услугата SQL Agent |
128 | Изпълнявайте, когато компютърът е неактивен |
@freq_interval
Този аргумент указва дните, в които се изпълнява заданието.
Този аргумент зависи от стойността на @freq_type
аргумент, както е посочено в следната таблица:
Стойност на freq_type | Ефект върху freq_interval |
---|---|
1 (веднъж) | freq_interval не се използва. |
4 (ежедневно) | Всеки freq_interval дни. |
8 (седмично) | freq_interval е едно или повече от следните (в комбинация с OR логически оператор):1 (неделя) 2 (понеделник) 4 (вторник) 8 (сряда) 16 (четвъртък) 32 (петък) 64 (събота) |
16 (месечно) | На freq_interval ден от месеца. |
32 (месечно относително) | freq_interval е едно от следните:1 (неделя) 2 (понеделник) 3 (вторник) 4 (сряда) 5 (четвъртък) 6 (петък) 7 (събота) 8 (ден) 9 (делен ден) 10 (Ден през уикенда) |
64 (когато стартира услугата SQLServerAgent) | freq_interval не се използва. |
128 | freq_interval не се използва. |
@freq_recurrence_factor
Това посочва броя на седмиците или месеците между планираното изпълнение на задание.
Това е int , със стойност по подразбиране 0
и се използва само ако freq_type
е 8
, 16
, или 32
.
@active_start_time
Указва времето на всеки ден между @active_start_date
и @active_end_date
аргументи за започване на изпълнение на задание. @active_start_time
еint , със стойност по подразбиране 000000
, което показва 12:00:00ч. на 24-часов часовник и трябва да бъде въведен с помощта на формуляра HHMMSS.
@active_start_date
Въпреки че не е включен в моите примери по-горе, @active_start_date
аргумент ви позволява да посочите датата, на която изпълнението на задание може да започне. Това е int , със стойност по подразбиране NULL, което показва днешната дата. Датата е форматирана като ГГГГММДД.
@active_end_date
Можете също да предоставите @active_end_date
аргумент, който посочва датата, на която изпълнението на задание може да спре.
@active_end_date
еint , със стойност по подразбиране 99991231
, което показва 31 декември 9999 г. Датата е форматирана като ГГГГММДД.
Повече информация
Вижте документацията на Microsoft за sp_add_schedule
и/или документацията на Microsoft за sp_add_jobschedule
за повече подробности относно различните аргументи и техните приети стойности.