В случае разрыва связи с сервером (или с MSSQL, или с Oracle), sarmat_timer должен тут же преркатить свою работу с выводом соотв. сообщения об ошибке (при этом таймер в самом sarmat_timer должен остановиться - и больше не выполнять никаких обращений ни к сканерам, ни к Oracle, ни к MSSQL серверу).
При загрузке sarmat_timer:
- если Oracle или MSSQL сервер недоступен, то вываливаться из программы с сообщением об ошибке, сам таймер не запускать;
- если SQL-сервера доступны, то необходимо перед началом выполнения задач по таймеру (в т.ч. опросов сканеров) проверить буфер - а нет ли незаконченных команд по обновлению информации, оставшихся по причине подвисания одного из серверов. И если таковые имеются, то аккуратно и последовательно выполнить все команды такого буфера.
- «RunOracleSQL» - выполняет SQL-запрос (или несколько запросов) на обновление к Oracle SQL серверу. Параметром служит просто строка Oracle SQL-запроса;
- «RunMSSQL» - выполняет SQL-запрос (или несколько запросов) на обновление к MSSQL серверу. Параметром служит просто строка MSSQL-запроса;
- «RefreshMSSQLContainer» - обновляет в MSSQL из Oracle информацию о контейнере. В качестве параметра передается штрих-код контейнера.
- «UpdateMSSQLFromOracle» - обновляет данные в таблице MSSQL по запросу из Oracle-сервера. Два параметра:
- строка sql-запроса к Oracle-серверу. Например «select state from sarmat.command_gas where id=678»
- строка MSSQL-запроса обновления, которая в своем составе использует подстановки = номеру столбца из предыдущего SQL-запроса к Oracle. Например, «Update dbo.ask_rec set state=$01$ where id=456» - подразумевается, что нужно присвоить полю state в таблице asc_rec с соотв. ID значение, полученное из предыдущего Oracle запроса.