Строки с ### используются для поиска системой справки в программе. ###0### DbEwarn v1.5. Программа для проверки потока данных в БД, рассылки предупр-ий по электронной почте и записи результатов в БД в виде статистики. Формат: dbewarn [ПАРАМЕТРЫ] Если dbewarn запущена без параметров, то программа пытается прочитать все параметры из файла dbewarn.ini. Параметры-переключатели (такие как -um и -usestat) в командной строке могут быть просто заданы (без значения), тогда считается, что они равны 1. В параметрах, в которых задаётся имя файла, для разделения директорий можно использовать как "\", так и "/". ПАРАМЕТРЫ (позиция не имеет значения, исключая опцию -?): -? - Подсказка, должна быть первой в командной строке, показывает подсказку об опции, следующей за ней, например: -? -tstart Если за -? нет никакой опции, то показывается общая справка (этот текст). Чтобы получить справку на русском, опцию -lang нужно поставить перед -?. Например, чтобы получить русскую справку о самой -lang, опции командной строки должны выглядеть так: -lang=ru -? -lang Если русские символы отображаются в консоли неверно, можно сменить кодировку по умолчанию (см. справку по -lang); -lang - Язык интерфейса, справки и писем. Чтобы получить справку на русском, -lang должна быть первой в командной строке, во всех остальных случаях её позиция не имеет значения; -odbc - Имя ODBC-источника (по умолчанию wsg); -user - Имя пользователя (по умолчанию wsg); -password - Пароль пользователя (по умолчанию wsg); -sta - Обязательная опция. Стания(ии), которые нужно проверить. Подробнее - в собственной справке опции -sta; -tstart - Время начала проверяемого периода (по умолчанию - текущий момент в формате Всемирного времени (UTC)); -tend - Время конца проверяемого периода; -tbegin - Время начала проверяемого периода (в формате UNIX: [-]111.11); -tqty - Длительность в секундах от времени начала (может быть < 0); -m0 - Установить время 00:00:00 для -tstart/-tbegin, -tend и -tstbegin; -use_tend - Использовать поле TEND вместо TBEGIN+TQTY в проверочных условиях; -to - Список адресов электронной почты, разделенных точкой с запятой или запятыми (без пробелов). Список получателей предупреждений; -from - Адрес эл.почты, с которого рассылаются предупреждения (по умолчанию test@gsras.ru); -sub - Тема писем с предупреждениями (по умолчанию "DbEwarn ALERT"); -ms - Почтовый SMTP-сервер рассылки (по умолчанию mailhost.gsras.ru); -um - Посылать предупреждения для всех станций в одном письме (по умолчанию: раздельные предупреждения для каждой станции); -restore - Посылать ли уведомления о восстановлении передачи данных; -log - Имя файла журнала (по умолчанию dbewarn.log); -maxlogsize - Максимальный размер файла журнала (по умолчанию 3 Мб); -dir - Директория для файлов журнала (приоритет выше, чем у -log); -ini - Ini-файл с опциями (по умолчанию dbewarn.ini); -tn - n = 1..8, т.е. t1,t2...t8, периоды отсутствия данных и рассылки; -tfuture - Интервал рассылки предупреждений о данных с датой в будущем (после -tend). По умолчанию - при каждом запуске программы; -usestat - Работать ли с таблицей статистики STATIS; -tstbegin - Время начала статистики в таблице STATIS. Статистика до этого времени удаляется при запуске программы; -maxdel - Максимальное кол-во записей, которое можно удалить из STATIS (по умолчанию 300000); -admto - Адреса эл.почты через точку с запятой или запятые для рассылки предупреждений, когда из STATIS нужно удалить больше, чем -maxdel записей. Если не задано, то высылается по адресам из -to; -stdr - Рисовать статистику (по умолчанию - нет); -stlib - Путь к динамической библиотеке, которая рисует статистику (по умолчанию dbewarndl.* в текущей директории, расширение * зависит от ОС); -stini - Ini-файл с опциями для рисования статистики (по умолчанию ini-файл DbEwarn-а); -v - Уровень подробности журнала. ###0### =============================================================================== Формат файла конфигурации (dbewarn.ini): ------------------------------------------------------------------------------- [DATABASE] ODBC=WSG-sql USER=WSG PASSWORD=WSG use_tend=0 ;usestat=1 - использовать/создать таблицу статистики statis usestat=1 [log] log=D:\Log\DBeWarn.log ;;[mail] ;restore - уведомлять о восстановлении поступления данных ;;restore=1 ;ms - mail server (имя, IP или FQDN) ;;ms=ceme ;to - адрес(а) получателя(ей) ;to=ira@gsras.ru;krasilovs@gsras.ru;borisovpa@gsras.ru;amal@gsras.ru ;;to=ira@gsras.ru;krasilovs@gsras.ru;borisovpa@gsras.ru ;to=anjey@gsras.ru ;sub - тема письма (по-умолчанию dbewarn) ;;sub=SevKav-SRV ;from - обратный адрес отправителя (по-умолчанию test@gsras.ru) ;from=eeas@gsras.ru [SYSTEM] ;sta - список станций (или через точку с запятой, или ссылка на файл) sta=@..\WSG_WrtDl\WSG_WrtDL.ini ;tstart и tend задают интервал проверки данных, считая от текущего времени ;(или можно указать конкретное время). Период отсутствия отсчитывается от tend ;(т.е, t1,t2... задаются относительно tend, а не tstart/tbegin!) tstart=-2:0:0 tend=+10:0 ;второе число в t1,t2 нужно задавать менного меньше, чем интервалы ;запусков dbewarn. ;t1 - в течение третьего часа отсутствия предупреждения будут слаться не менее, ;чем раз в 9 минут (если dbewarn запускается раз в 15 минут, то при каждом ;запуске в течение третьего часа). ;t2 - при отсутствии данных до суток (начиная с 4-го часа отсутствия) - пред. каждый час. ;t3 - в течение первой недели отсутствия (начиная со 2-го дня) - раз в день. ;t4 - после недели отстствия (т.е., с началом 8-го дня) - пред. раз в 10 дней ;(в том числе по прошествии месяца). ;tfuture - интервал рассылки пред., когда есть данные с датой после -tend. ;!!! Если tstart=-2:0:0 (минус два часа от текущей системной даты), то t1=3h-9n ;!!! означает слать пред. раз в 9 минут через ОДИН час отсутствия данных ;!!! (фактически, при каждом запуске dbewarn). ;t1=3h-9n ;t2=1d-57n ;t3=1w-1d ;t4=1m-10d ;tfuture=3h t1=3h-9n t2=1w-1d tfuture=3h ;tstbegin - время начала статистики в STATIS. Задается так же, как -tstart. ;Вся статистика до этого времени удаляется при запуске dbewarn. tstbegin=-2.0 ;[STA] ;CHAN= - времена последних проверок или отсылки предупреждения по каждой станции из списка. ;Конкретный смысл времени зависит от состояния данных в CHAN_TYPE. ;CHAN_TYPE=0 - данных нет, =1 - данные есть, =2 - есть данные после -tend [AD2] SHE=1320304800 SHN=1320304800 SHZ=1320304800 SHE_TYPE=0 SHN_TYPE=0 SHZ_TYPE=0 Таблица для хранения статистики statis ------------------------------------------------------------------------------- Создается при старте при отсутствии ее в БД и установленном параметре usestat=1 в файле настройки. Делаются попытки создать с разными типами даты/времени в следующем порядке: 1. datetime; 2. smalldatetime - для MS SQL; 3. date - для Oracle (и всех остальных СУБД?). Запрос для создания (типы подставляются на место звёздочек): CREATE TABLE statis (id integer not null,sta varchar(6),chan varchar(8), lcode varchar(8), maxtime ***,maxitime float,checktime ***,flags integer, primary key (id)) =============================================================================== Опции командной строки и ini-файла. ------------------------------------------------------------------------------- ###?### ОПЦИЯ -? ФОРМАТ: -? [-_другая_опция_] ПРИМЕР: -? -sta Получить справку о "_другой_опции_". -? должен быть первым в командной строке, а справка выдается об опции, следующей за ним (вторая опция, должна быть без значения, т.е. просто -? -sta, а не -? -sta=...). Опция -? может быть второй только в том случае, когда нужно показать справку на русском языке. Тогда первой идёт опция -lang с указанием языка и, если нужно, кодировки, которая используется в консоли. Кодировку можно задать, если русские символы отображаются неверно, т.е., кодировка консоли отличается от той, что программа использует по умолчанию. Подробнее - см. справку по -lang. Также -lang можно задать в ini-файле настроек, тогда в командной строке её можно не указывать. Эта конкретная справка появляется в результат выполнения "dbewarn -? -?". Если _другая_опция_ не задана, то показывается общая справка. ###?### ------------------------------------------------------------------------------- ###lang### ОПЦИЯ -lang ФОРМАТ: -lang=язык[:кодировка] ПРИМЕРЫ: -lang=ru:UTF-16 -lang=ru:1251 -lang=ru:cp866 Язык интерфейса, справки и писем. Чтобы получить справку на русском, опция -lang должна быть первой в командной строке, во всех остальных случаях её позиция не имеет значения. По умолчанию - en. Язык может быть en (английский) или ru (русский). Кодировка для русского языка - это кодировка для консоли. Она может принимать одно из следующих значений (фактически, все, которые поддерживает Qt): 1. IBM 866 2. KOI8-R 3. KOI8-U 4. Windows-1250 до 1258 5. UTF-8 6. UTF-16 7. UTF-16BE 8. UTF-16LE 9. UTF-32 10. UTF-32BE 11. UTF-32LE 12. Apple Roman 13. Big5 14. Big5-HKSCS 15. CP949 16. EUC-JP 17. EUC-KR 18. IBM 850 19. IBM 874 20. ISO 2022-JP 21. JIS X 0201 22. JIS X 0208 23. MuleLao-1 24. ISO 8859-1 до 10 25. ROMAN8 26. Shift-JIS 27. TIS-620 28. ISO 8859-13 до 16 29. TSCII 30. WINSAMI2 31. GB18030-0 32. Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml Для номеров 1, 4, 15, 18, 19 можно указать просто число или "cp" + число. "cp" (английскими буквами) - code page. Если кодировка не указана, то используется кодировка консоли по умолчанию: для Windows: IBM 866 (русская кодировка DOS-а); для других ОС (MacOS, Unix-ы): UTF-8. На кодировку рассылаемых писем и кодировку файла журнала это не влияет - в них всегда используется Windows-1251. Также -lang можно задать в ini-файле настроек, тогда в командной строке её можно не указывать. ###lang### ------------------------------------------------------------------------------- ###odbc### ОПЦИЯ -odbc ФОРМАТ: -odbc=имя_источника ПРИМЕР: -odbc="wsg oracle1" Имя ODBC-источника (по умолчанию "wsg"). ###odbc### ------------------------------------------------------------------------------- ###user### ОПЦИЯ -user ФОРМАТ: -user=имя_пользователя ПРИМЕР: -user="wsg oracle1" Имя пользователя для входа в БД (по умолчанию "wsg"). ###user### ------------------------------------------------------------------------------- ###password### ОПЦИЯ -password ФОРМАТ: -password=пароль_пользователя ПРИМЕР: -password="wsg oracle1" Пароль пользователя для входа в БД (по умолчанию "wsg"). ###password### ------------------------------------------------------------------------------- ###sta### ОПЦИЯ -sta ФОРМАТ (без пробелов): -sta={ @путь | * каналы | STA1[*] каналы1 [: LC1] [; STA2[*] каналы2 [: LC2]]... } где путь (идёт после символа @) - путь к другому ini-файлу (не dbewarn.ini) в формате wsg_wrtdl со списком станций; каналы ::= [: CH1[*] [, CH2[*]]...] LCx - location code (поле LCODE), необязательный (по умолчанию '??'), если LCx=?? или не указан, использ. условие "LCODE='??' OR LCODE IS NULL", если LCx=NULL, используется условие "LCODE IS NULL", другие значения LCx дают условие "LCODE='LCx'"; STAx - код станции (не международный, а из поля SITE.STA, т.е. внутренний код WSG); CHx - имя канала для соотв. STAx. * (звездочка) в STAx и CHx подразумевает в любом месте любую комбинацию символов % _ ? * и вместо проверки на равенство (напр., STA='AAA') проверяет условие с LIKE (напр., STA LIKE 'AA%') * или % - любая строка; ? или _ - любой символ. ПРИМЕРЫ: -sta=@..\wsg_wrtdl\wsg_wrtdl.ini - читать список станций и каналов из другого ini-файла -sta=* - все станции -sta=*:BHZ - каналы BHZ всех станций -sta=*:BH*,SHN - для всех станций: каналы SHN и каналы, похожие на BH... -sta=OBN - все каналы станции OBN -sta=OBN:BHN,BHE - для станции OBN: каналы BHN и BHZ -sta=A*:BH*,SHE;OBN:BHZ - для всех станций с кодом, похожим на A...: все каналы, похожие на BH... и канал SHE; для станции OBN: канал BHZ STA - обязательная опция (нет значения по умолчанию)! Её можно пропустить, только если список станций и каналов задан в самом ini-файле с опциями (тогда в разделе [system] должно быть поле groups=N и должны присутствовать N разделов, описывающих станции в том же формате, что в wsg_wrtdl.ini). ###sta### ------------------------------------------------------------------------------- ###tstart### ОПЦИИ -tstart, -tend, -tbegin, -tqty и -tstbegin -tstart - время начала периода, за который делается проверка наличия данных. Имеет больший приоритет, чем -tbegin. -tbegin - то же самое, но в формате UNIX (кол-во секунд от 01.01.1970). Может быть < 0, тогда это кол-во секунд назад от текущего момента. -tend - время конца периода. Имеет больший приоритет, чем -tqty. -tqty - время в секундах от -tstart/-tbegin. Может использоваться вместо -tend, в таком случае tend = tbegin/tstart + tqty. -tstbegin - время, начиная с которого в БД должна быть статистика. Вся статистика до этого времени удаляется при старте программы. Эта опция игнорируется, если -usestat не задана (т.е., равна 1). См. также справку по -maxdel. ФОРМАТ -tqty: -tqty=[-]секунды ПРИМЕР: -tqty=-86400 ФОРМАТ -tstart, -tend, -tstbegin (ставьте в двойные кавычки,если есть пробелы): -tstart="{[-] | [+]}{Дата Время | Время Дата}" Формат Даты: [[-]ГОД.[-]МЕСЯЦ.[-]ДЕНЬ] | [-]МЕСЯЦ.[-]ДЕНЬ] | [-]ДЕНЬ] Формат Времени: [[-]ЧАС:[-]МИНУТА:[-]СЕКУНДА] | [-]МИНУТА:[-]СЕКУНДА] | [-]СЕКУНДА] Пусть SD - текущая системная дата и TM - дата -tstart, -tend или -tstbegin. ПРИМЕРЫ: -tstart="--1.2.-100 11:-156" - через 1 год от SD.год, но двумя месяцами ранее, плюс ещё 100 дней, минус 11 минут и плюс 156 секунд. -tstart=2000.11.23 - 23 февраля 2000 года, полночь (с опцией -m0) или текущее системное время (без -m0). Дату и Время можно менять местами, поэтому первый встретившийся разделитель (точка или двоеточие) определяет тип (точка - это Дата, двоеточие - это Время). Если первым в идёт число без разделителя, то считается, что это ДЕНЬ ДАТЫ (тогда следующим может идти только Время, например: "23 12:45:10"). Если в самом начале стоит "-" или "+", то: 1) Все числа, идущие далее, задают дату относительно соотв. частей текущей системной даты. 2) TM.год = SD.год (- или +) ГОД (и т.д для других частей даты/времени). Это значит, что ГОД/МЕСЯЦ/... можно задать любыми числами, в т.ч. < 0. 3) Можно вставить "-" перед любым из значений ГОД/МЕСЯЦ/..., и это повлияет на знак операции в пункте (2). 4) Любая пропущеная часть Даты/Времени считается равной базовому значению (ГОД - 1970, другие - 0 или 1). 5) Опция -m0 устанавливает время SD в 00:00:00. 6) Если, например, установить МЕСЯЦ=-1, и при этом SD.месяц=3 (март) и SD.день=31, то результат будет: TM.месяц=2 (февраль) и TM.день=28 (или 29 для високосного года, но не 31!). Если в начале НЕТ "-" или "+", то: 1) Дата и Время задаются в обычном виде (TM.год = ГОД и т.д). 2) Нельзя ставить "-" перед значениями ГОД/МЕСЯЦ/...! 3) Любая пропущеная часть Даты/Времени заменяется соотв. частью SD. 4) Опция -m0 устанавливает время SD равным 00:00:00, и в пункте (3) все пропущенные становятся равными базовому значению. Если не указана ни -tstart, ни -tbegin, то время начала становится равным текущему моменту (SD). В этом случае опция -m0 (если указана) устанавливает время начала на полночь текущего дня. Если указана -tstart, то -tbegin игнорируется. Если указана -tend, то -tqty игнорируется. Если -tbegin < 0, то "время начала" = SD + tbegin (т.е, если -tbegin < 0, получается вычитание). Если "время начала" > "время конца", то они меняются местами. Если не указана ни -tend, ни -tqty, то делается проверка за один день до текущего момента. ###tstart### ------------------------------------------------------------------------------- ###m0### ОПЦИЯ -m0 ФОРМАТ: -m0 Устанавливает в -tstart/-tbegin, -tend и -tstbegin время 00:00:00 (по умолчанию - время в указанных параметрах остаётся без изменений). ###m0### ------------------------------------------------------------------------------- ###use_tend### ОПЦИЯ -use_tend ФОРМАТ: -use_tend Эта опция заставляет программу использовать поле TEND вместо TBEGIN+TQTY в условиях отбора (по умолчанию - использовать TBEGIN+TQTY). ###use_tend### ------------------------------------------------------------------------------- ###to### ОПЦИЯ -to ФОРМАТ: -to=email-ы где email-ы ::= email1[;email2...] ПРИМЕР: -to=aaa@gsras.ru;bbb@mail.ru Адреса эл.почты, разделённые точкой с запятой или запятыми, на которые рассылаются предупреждения об отсутствии и восстановлении данных. Если эта опция не задана, то письма не будут рассылаться, будет только вывод на экран и в файл журнала. ###to### ------------------------------------------------------------------------------- ###from### ОПЦИЯ -from ФОРМАТ: -from=email_отправителя ПРИМЕР: -from=aaa@gsras.ru Адрес эл.почты, с которого рассылаются предупреждения, обратный адрес отправителя (по умолчанию - test@gsras.ru). ###from### ------------------------------------------------------------------------------- ###sub### ОПЦИЯ -sub ФОРМАТ: -sub=тема ПРИМЕР: -sub="No data!" Общая часть темы писем с предупреждениями (по умолчанию - "DbEwarn ALERT"). Если опция -um не задана или высылается системное предупреждение (см. опцию -admto), то в письмах к этой теме будет добавлен тип предупреждения. ###sub### ------------------------------------------------------------------------------- ###ms### ОПЦИЯ -ms ФОРМАТ: -ms=smtp_сервер ПРИМЕР: -ms=smtp.sm.com Почтовый SMTP-сервер для рассылки предупреждений (по умолчанию mailhost.gsras.ru). ###ms### ------------------------------------------------------------------------------- ###um### ОПЦИЯ -um ФОРМАТ: -um Заставляет программу посылать единые предупреждения для всех станций (т.е., предупреждения по всем станциям высылаются в одном письме с темой -sub). (по умолчанию: посылать раздельные предупреждения для каждой станции). Если эта опция НЕ задана, то темы сообщений будут такими: <тема из опции -sub> (<код станции>_<тип сообщения>), например: DbEwarn ALERT (ANN_no data). <тип сообщения> может быть: "no data" - сообщение об отсутствии данных; "restored" - сообщение о восстановлении данных (после отсутствия); "future" - ошибка данных, т.е, найдены "данные из будущего" (после -tend, например, за 01.01.2047); "Frestored" - сообщение о восстановлении данных (после "future"). Сообщения с "restored" и "Frestored" посылаются, только если задана опция -restore. ###um### ------------------------------------------------------------------------------- ###restore### ОПЦИЯ -restore ФОРМАТ: -restore Заставляет программу посылать сообщения о восстановлении передачи данных после периода отсутствия или ошибки. (по умолчанию: не посылать сообщения о восстановлении). ###restore### ------------------------------------------------------------------------------- ###log### ОПЦИЯ -log ФОРМАТ: -log=файл_журнала ПРИМЕР: -log="c:\tmp 2\log1.txt" Имя файла журнала (по умолчанию dbewarn.log в директории программы). Лучше использовать расширение, которое сразу открывается текстовым редактором (log, txt). Если задана опция -dir, то опция -log игнорируется. ###log### ------------------------------------------------------------------------------- ###maxlogsize### ОПЦИЯ -maxlogsize ФОРМАТ: -maxlogsize=максимальный_размер ПРИМЕРЫ: -maxlogsize=20m -maxlogsize=7d Максимальный размер файла журнала (по умолчанию - 3 Мб). 1. Если не задана опция -dir: 1.1. Если -maxlogsize задан просто числом, или числом с буквами K/k/M/m: Когда файл журнала начинает превышать этот размер, верхние строки из него удаляются до тех пор, пока размер не станет меньше -maxlogsize. Размер указывается в байтах (число без букв), килобайтах (к числу добавляется английская "k" или "K") или мегабайтах (добавляется английская "m"/"M"), но не может быть меньше 16 Кб. Соответсвенно, k - умножение на 1024, m - на 1024*1024=1048576. 1.2. Если -maxlogsize задан с буквой D/d: В файле журнала удаляются верхние строки с датами <= текущая системная дата минус кол-во дней из -maxlogsize (7d - семь дней). Не может быть меньше одних суток. 2. Если опция -dir задана: 2.1. Если -maxlogsize задан просто числом, или числом с буквами K/k/M/m: Подсчитывается общий размер суточных файлов журнала, начиная с текущей системной даты и двигаясь в прошлое. Когда общий размер начинает превышать -maxlogsize, суточные файлы журнала начинают удаляться (не включая тот, с которым общий размер впервые превысил -maxlogsize). 2.2. Если -maxlogsize задан с буквой D/d: Удаляются все файлы журналов за даты <= текущая системная дата минус кол-во дней из -maxlogsize. ###maxlogsize### ------------------------------------------------------------------------------- ###dir### ОПЦИЯ -dir ФОРМАТ: -dir=директория ПРИМЕР: -dir="c:\log 2" Директория, в которую будут записываться файлы журналов, раздельные для каждых суток. Т.е., журналы всех сеансов программы за одни и те же сутки записываются в один и тот же файл. Журналы сеансов за следующие сутки начнут записываться уже в другой файл и т.д. Имена файлов журнала при этом имеют вид: yyyy_mm_dd.log Когда опция -dir задана, то опция -log игнорируется (-dir имеет более высокий приоритет). ###dir### ------------------------------------------------------------------------------- ###ini### ОПЦИЯ -ini ФОРМАТ: -ini=ini_файл ПРИМЕР: -ini="c:\tmp 2\111.ini" Имя ini-файла (по умолчанию "dbewarn.ini" в директории программы). Ini-файл может содержать поля с такими же именами, как опции в командной строке, в разделах, описанных ниже. Опции-флажки (Да/Нет, такие как -m0) должны иметь значения 1/true или 0/false (в отличие от командной строки, где они могут просто присутствовать без указания значения, что эквивалентно значению 1). Опции командной строки имеют больший приоритет, чем опции с теми же именами в ini-файле. Разделы в ini-файле и опции в них: [LOG] - LOG (то же имя, что у раздела), MAXLOGSIZE, DIR; [MAIL] - TO, FROM, SUB, MS, UM, RESTORE, ADMTO; [DATABASE] - ODBC, USER, PASSWORD, USE_TEND, USESTAT; [SYSTEM] - GROUPS, M0, STA, TSTART, TEND, TBEGIN, TQTY, TFUTURE, TSTBEGIN, MAXDEL, V, LANG, STDR, STLIB, STINI. Опция GROUPS используется только в ini-файле. Она определяет кол-во разделов с именами [GROUPx], которые нужно учитывать при проверке станций. Здесь x - число с 1 до GROUPS. В каждом разделе должна быть информация о: 1. коде станции (поле STATION, внутренний код WSG, не международный); 2. каналах станции (поле CHAN с перечислением каналов через запятую); 3. location code (поле LCODE). Если опция STA не задана, то будет сделана попытка построить её из таких "групп", если они есть в ini-файле, но следует учитывать, что у опции STA более высокий приоритет, чем у "групп". Каждый раздел [GROUPx] ДОЛЖЕН содержать поле STATION и МОЖЕТ содержать поля CHAN и LCODE. Если CHAN не задано, берётся по всем каналам; если LCODE не задано, используется условие "LCODE='??' OR LCODE IS NULL". Также в ini-файл пишутся разделы с временными отметками и последним состоянием данных, нужные для рассылки через заданные интервалы (-t1,-t2...). ###ini### ------------------------------------------------------------------------------- ###t1### ОПЦИИ -t1, -t2, -t3, -t4, -t5, -t6, -t7, -t8 ФОРМАТ: -tn=p1[-p2] ПРИМЕР: -t1=1h-15n Задаются в командной строке или в разделе SYSTEM в ini-файле. Смысл этих опций - посылать предупреждения со всё большим интервалом при длительном отсутствиии данных. Чем дольше нет данных, тем реже рассылаются предупреждения. Период времени можно задавать в разных единицах: 1. секунды (s или ничего); 2. минуты (n); 3. часы (h); 4. дни (d); 5. недели (w); 6. месяцы (m); 7. годы (y); Здесь буквы в скобках - обозначения единиц времени при задании периода. Единицы "год" и "месяц" не зависят от високосного года и конкретного месяца, т.е., 1y = 365 дней (365d), 1m - 30 дней (30d). Далее, как обычно: 1w = 7d, 1d = 24h, 1h = 60n, 1n = 60s. Это значит, что -t1=604800s равнозначно -t1=1w (60*60*24*7 = 604800). Если период задаётся в секундах, то букву s можно опускать. Пара "период отсутствия данных"-"период рассылки предупреждений" задаётся в p1 и p2. Если p2 не указан, то он принимается равным p1/4, например, -t1=1h - это то же, что -t1=1h-15n. Логика проверки: если вообще не задавались опции -tn, то предупреждения рассылаются при каждом запуске программы (при отсутствии соотв. данных). Если нет данных в течение p1 из t1, то пред-ия посылаются с интервалом p2 из t1. Если период отсутствия данных превысил p1 из t1, то проверяется -t2. Если нет данных в течение p1 из t2, то пред-ия посылаются с интервалом p2 из t2 и т.д. Пример: T1=1h-15n T2=3h-30n T3=1d-1h T4=1w-1d Это значит, что в течении первого часа с момента отсутствия данных пред. будут посылаться примерно каждые 15 минут (с учётом времени запуска планировщика заданий и др. неточностей). Когда пройдет больше часа, будет проверяться второй период; в течении трех часов с момента отсутствия данных пред. будут посылаться каждые 30 минут. По прошествии 3 часов, пред. рассылаются раз в час. По прошествии 1 дня, пред. рассылаются раз в день. По прошествии 1 недели, пред. по-прежнему рассылаются раз в день, т.е. с интервалом p2 последнего периода T4. Периоды нужно задавать в порядке возрастающей длительности p1, иначе логика проверки нарушится. Желательньно, чтобы первый период (p1 из t1) был больше или равен tqty. Чтобы рассылать предупреждения не чаще, чем через интервал p2, ведется отсчет времени в ini-файле. Для каждого проверяемого канала проверяемых станций (разделы ini-файла - коды станций, в каждом разделе параметры по именам каналов) пишется время последнего запуска программы, если данные были, или время предыдущей отсылки пред-ия, если данных не было. Состояние данных (нет/есть/ошибка - 0/1/2) также сохраняется в полях, названных по именам каналов + "_TYPE". Это последнее состояние передачи данных, и именно это число записывается в таблицу STATIS, если обработка статистики включена. Пример ini-файла: [ANN] BHE=1226930607 BHN=1226930607 BHZ=1226930548 BHE_TYPE=0 BHN_TYPE=0 BHZ_TYPE=0 ###t1### ------------------------------------------------------------------------------- ###tfuture### ОПЦИЯ -tfuture ФОРМАТ: -tfuture=p0 ПРИМЕР: -tfuture=3h Если найдены данные после конца проверяемого периода (например, есть данные за 01.01.2047), то предупреждение будет посылаться с интервалом, заданным в этой опции (по умолчанию: 3 часа). Также это сообщение отсылается (независимо от -tfuture), когда "данные из будущего" появились первый раз. Можно использовать те же единицы (n, h, d и т.д.), что для опций -t1, -t2... ###tfuture### ------------------------------------------------------------------------------- ###usestat### ОПЦИЯ -usestat ФОРМАТ: -usestat Опция оределяет, будет ли программа работать с таблицей статистики STATIS (создавать её в случае надобности и записывать туда данные). По умолчанию - нет. ###usestat### ------------------------------------------------------------------------------- ###maxdel### ОПЦИЯ -maxdel ФОРМАТ: -maxdel=N ПРИМЕР: -maxdel=500000 Определяет, какое максимальное кол-во записей программа может удалить из STATIS. Если нужно удалить больше чем -maxdel записей, то по адресам из -admto (если задано) или -to (если -admto не задано) высылается соотв. предупреждение, и удаление НЕ производится - данные нужно удалить вручную, убедившись, что БД осталась в рабочем состоянии. Дело в том, что некоторые СУБД пишут удаляемые записи в журнал транзакций, что при обширных удалениях может к полной невозможности что-либо изменять в БД. Ситуация тестировалась на MS SQL. Эта опция имеет смысл, только если -usestat=1. По умолчанию - 300000. ###maxdel### ------------------------------------------------------------------------------- ###admto### ОПЦИЯ -admto ФОРМАТ: -admto=emails где emails ::= email1[;email2...] ПРИМЕР: -admto=aaa@gsras.ru;bbb@mail.ru Адреса эл.почты, разделённые точкой с запятой или запятыми, на которые рассылаются системные предупреждения, например, о невозможности автоматической очистки таблицы статистики (когда нужно удалить слишком много записей, что может привести к переполнению лога транзакций СУБД). См. также справку по -maxdel. Если опция -admto не задана, то письма будут рассылаться адресатам из опции -to, если же и она не задана, то письма вообще не будут рассылаться, будет только вывод на экран и в файл журнала. ###admto### ------------------------------------------------------------------------------- ###stdr### ОПЦИЯ -stdr ФОРМАТ: -stdr Эта опция определяет, будет ли программа создавать статистические html-страницы и рисунки. По умолчанию они не создаются. ###stdr### ------------------------------------------------------------------------------- ###stlib### ОПЦИЯ -stlib ФОРМАТ: -stlib=файл_динамической_библиотеки ПРИМЕР: -stlib="c:\tmp 2\dbe.dll" Динамическая библиотека, которая должна создавать все статистические html-страницы и рисунки. Эту опцию имеет смысл применять, когда одна и та же библиотека используется несколькими программами (например, DbEwarnView и DbEwarn-ом). ###stlib### ------------------------------------------------------------------------------- ###stini### ОПЦИЯ -stini ФОРМАТ: -stini=ini_файл ПРИМЕР: -stini="c:\tmp 2\111.ini" По умолчанию - ini-файл DbEwarn-а. В этом ini-файле должны быть опции для создания html-страниц статистики. ###stini### ------------------------------------------------------------------------------- ###v### ОПЦИЯ -v ФОРМАТ: -v=N ПРИМЕР: -v=2 Уровень подробности журнала. N может иметь следующие значения: 0 - обычный (по умолчанию, только необходимая информация); 1 - в журнал также пишутся все запросы insert into statis; 2 - в журнал пишутся абсолютно все запросы к базе данных. ###v###