powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Event
4 сообщений из 4, страница 1 из 1
Event
    #36050517
Yurk0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adaptive Server Anywhere Database Engine Version 9.0.2.3778

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE EVENT "e_test"
SCHEDULE "e_test_sh" BETWEEN '06:00' AND '19:00' EVERY  3  MINUTES
AT CONSOLIDATED
HANDLER
begin
  message 'Event ' || now(*) to console
end;

Например:
2009-06-19 09:02 старт БД
2009-06-19 09:03:00.015 Event
2009-06-19 09:06:00.046 Event
2009-06-19 09:09:00.093 Event
2009-06-19 09:12:00.015 Event
пользователь меняет время на компьютере на 2009-05-31 08:30:00
2009-05-31 08:32:22.812 Event
После этого событие больше не срабатывает.

Меня интересует можно ли сделать так чтобы событие срабатывало даже не смотря на смену системной даты?
...
Рейтинг: 0 / 0
Event
    #36050866
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно можно. Нужно убрать BETWEEN '06:00' AND '19:00' и первой строкой вставить в код события:
Код: plaintext
1.
2.
3.
4.
5.
IF NOT (DatePart(hour, Now()) BETWEEN '06:00' AND '19:00')
THEN
  RETURN;
END IF;

// ... дальше само событие
...
Рейтинг: 0 / 0
Event
    #36056041
Yurk0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSКонечно можно.

вот что получилось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE EVENT "e_test"
SCHEDULE "e_test_sh" START TIME '06:00' EVERY  3  MINUTES
HANDLER
begin
  message DatePart(hour,Now(*)) to console;
  if not(DatePart(hour,Now(*)) between  6  and  19 ) then
    return
  end if;
  message 'Event ' || now(*) to console
end;

тестирование:
2009-06-23 08:11 Страт БД
8
Event 2009-06-23 08:12:00.031
8
Event 2009-06-23 08:15:00.093
.....
13
Event 2009-06-23 13:48:00.015

меняем дату на 31-05-2009 8:00

8
Event 2009-05-31 08:01:51.343
вот и после этого событие больше не срабатывает.

В чем может быть ошибка?
...
Рейтинг: 0 / 0
Event
    #36056869
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yurk0В чем может быть ошибка?
Порылся в документации. К сожалению это не ошибка, а фича. ASA после выполнения события, фиксирует его текущее дату и время, прибавляет к нему указанный в расписании интервал и сохраняет внутри себя следующую дату и время выполнения события, при наступлении которого сервер вызовет событие. Если же на сервере переставить системную дату и время, то таким образом событие не сработает. Единственный способ борьбы - на момент перевода времени на сервере, останавливать ASA и далее заново запускать базу.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Event
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]