вторник, 24 февраля 2009 г.

Календарные строки

Синтаксис использования календарной строки для значения параметра repeat_interval процедуры CREATE_JOB чрезвычайно прост.

Например, если вы определяете задание, которое выполняется с понедельника по пятницу ровно в 7 часов утра и 3 часа дня,
то значением параметра repeat_interval может быть такая календарная строка:


FREQ=DAILY; BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=7,15  с понедельника по пятницу ровно в 7 часов утра и 3 часа дня

Предложение FREQ может быть ровно одно, а предложений BY может быть несколько разных видов.

Предложение FREQ задает интервал между повторными выполнениями.

Если задание должно повторяться каждый день FREQ = DAILY.

FREQ=DAILY;
FREQ=HOURLY;
FREQ=MINUTELY;
FREQ=SECONDLY;

FREQ=YEARLY;
FREQ=MONTHLY;
FREQ=WEEKLY;

Предложение BY определяет, когда именно задание будет выполняться.

В примере, определяя частоту выполнения, мы указали, что задание выполняется ежедневно (FREQ=DAILY).
Теперь следует ограничить множество дней (задание должно выполняться только в рабочие дни), указав BYDAY=MON,TUE,WED,THU,FRI.
Далее необходимо потребовать, чтобы задание запускалось в 7 часов утра и в 3 часа дня, указав BYHOUR=7,15.


Разрешены следующие ключевые слова:
BYMONTH,
BYMONTHDAY,
BYYEARDAY,
BYHOUR,
BYMINUTE и
BYSECOND


Предположим, что задание следует запускать ежедневно (вне зависимости от дня недели) в 10 часов утра, в 2 часа дня и в 8 часов вечера.
Тогда параметр repeat_interval может быть таким:

FREQ=DAILY; BYHOUR=10,14,20   ежедневно (вне зависимости от дня недели) в 10 часов утра, в 2 часа дня и в 8 часов вечера.

FREQ=DAILY; INTERVAL=2, BYHOUR=10,14,20  через день, а не каждый день Используем новое ключевое слово – INTERVAL

Предложение INTERVAL=2 изменяет частоту вдвое по отношению к значению, указанному в предложении FREQ. В нашем случае FREQ=DAILY,
поэтому задание будет выполняться каждые два дня.

FREQ=DAILY; BYHOUR= - 2  Отрицательные значения означают отсчет от конца периода. Например, следующая строка задает второй час, начиная с конца дня

BYMONTH Планирование выполнение задания в определенные месяцы.
BYMONTH=JUN,DEC чтобы выполнялось только в июне и декабре
BYMONTH=6,12  по номерам месяцев
Точная дата внутри месяца, когда задание будет выполнено, совпадает с днем его запуска.
Например, если задание запускается 4 июля, то в декабре и в июне оно будет выполнено 4 числа.
Если необходимо, чтобы задание выполнялось в другой день, следует использовать ключевое слово BYMONTHDAY.

BYMONTHDAY Указывает, в какой именно день месяца должно выполняться задание.
FREQ=MONTHLY; BYMONTHDAY=1; BYHOUR=15 первого числа каждого месяца в 3 часа дня
Если опустить предложение BYHOUR, задание по умолчанию будет выполняться в полночь.

BYYEARDAY Указывает, в какой день года должно выполняться задание.
FREQ=YEARLY; BYYEARDAY=15 в пятнадцатый день каждого года

BYHOUR Планирование выполнения задания в определенные часы.
FREQ=DAILY; BYHOUR=3,6,9    каждый день в 3, 6 и 9 часов утра задаем:
FREQ=MINUTELY; BYHOUR=3,6,9 каждую минуту в определённые часы ( 03:00:00-03:59:00, 06:00:00-06:59:00, 09:00:00-09:59:00)

BYMINUTE Планирование выполнения задания в определенную минуту.
FREQ=MINUTELY; BYMINUTE=30 каждые полчаса
FREQ=HOURLY; BYMINUTE=30 каждые полчаса так как составляющая часа не указывается
FREQ=DAILY; BYMINUTE=30  выполняется каждый день в 00:30  округление будет вестись с точностью до дня

BYSECOND  планирования выполнения задания в определенную секунду.
Отрицательное значение какого то ключевого слова означает отсчет от конца (а не от начала) периода.
Например, следующая календарная строка
FREQ=YEARLY; BYYEARDAY= - 1  указывает на первый день года, начиная с его конца.
Поэтому такое задание будет выполняться каждый год 31 декабря.


Примеры календарных строк:

Пусть сегодня 5 июля 2005 года

FREQ=YEARLY  будет выполняться 5 июля каждый год, начиная с 2006 в полночь

FREQ=YEARLY; INTERVAL=2  будет выполнено 5 июля в 2007 году, 2009, 2011 и т. д. (через год)

FREQ=YEARLY; BYMONTH=JAN будет выполняться ежегодно 5 января (опять таки в полночь) просто поменялся месяц.

FREQ=YEARLY; BYMONTH=JAN; BYMONTHDAY=2  будет выполняться 2 января 2006 года, 2 января 2007 года и т. д.

FREQ=YEARLY; BYMONTH=JAN; BYDAY=SUN  будет выполняться ежегодно каждое воскресенье января

FREQ=YEARLY; BYMONTH=JAN; BYMONTHDAY=2; BYDAY=SUN будет выполняться каждое воскресенье января, если оно выпадет на 2-е число

FREQ=YEARLY; BYYEARDAY=60 выполнение задания каждый 60-й день года
планировщик учел високосность 2008 года: в нем 60-й день выпадает на 29 января В остальных случаях шестидесятым днем года является 1 марта

FREQ=YEARLY; BYYEARDAY=60; BYMONTHDAY=1 Пусть задание выполняется в 60-й день года и в первый день месяца (високосный год будет пропущен)

FREQ=YEARLY; BYWEEKNO=2 выполняться каждый день второй недели года  Все семь дней второй недели каждого года

FREQ=DAILY; BYHOUR=3,6,9 выполняется ежедневно ровно в три, шесть и девять часов утра

FREQ=DAILY; INTERVAL=2; BYHOUR=3,6,9  тоже но через два дня  Задание выполняется 6 июля ровно в три, шесть и девять часов утра, затем 8 июля

FREQ=DAILY; BYHOUR=3,6,9; BYMINUTE=00,15,30,45  выполняется ежедневно в 3, 6 и 9 часов дня, но в указанные минуты






Комментариев нет:

Отправить комментарий