This is topic Выполнение SQL-запросов RTM в реальном времени in forum Мониторы Реального Времени / Real Time Monitors at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/35/t/000172.html

Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Здравствуйте уважаемые Господа разработчики!

Цитата из раздела хелпа "Выполнение SQL-запросов в реальном времени":
"Если SQL-запрос по каким-либо причинам выполнить невозможно, то по истечении 600 секунд с момента инициализации запроса каналу CALL устанавливается признак аппаратной недостоверности."
В действительности установки каналу вызывающему шаблон связи с БД признак аппаратной недостоверности не устанавливается, хотя судя по работе ODBC драйвера ч/з несколько десятков секунд где то около 20-30 RTM освобождает драйвер, но 4-й атрибут остаётся равным нулю.
Всё бы ничего, только в реальных условиях невозможно отследить корректность работы с базой по этому каналу (который шаблон связи вызывает) и соответственно прекратить записывать во входное значение этого канала №запроса для чтения с базы информации. Там (в хелпе) есть ещё вот это:"Значение канала CALL задает номер выполняемого запроса (см. Создание SQL-запросов ). После отработки, значение канала автоматически сбрасывается в 0." На самом деле, даже если нет связи, реальное значение в ноль сбрасывается, по истечении вышеуказанного таймаута, не смотря на то что запрос фактически не отработан!
Поэтому у Нас вопрос: Как отследить обрыв связи с БД, чтобы остановить опрос, т.к. при её отсутствии наблюдается периодическое подвисание РТМ с циклом равным циклу отработки канала выз-го шаблон св. с БД? Но так, чтоб это было более менее оперативно.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. 0 образуется в канале в момент отработки канала, а не запроса.

2. К сожалению, сейчас доступна только косвенная диагностика для запросов на чтение. В аттрибут I1 возвращается количество считанных строк. Если 0, то с некоторой вероятностью запрос не проходит, но существует также вероятность, что в базе просто нет таких записей.

3. Чтобы канал связи с БД не подвешивал систему, можно перевести его в поток Idle. Раньше так и было по умолчанию, сейчас он находится в основном потоке.
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
К сожалению перевод в поток IDLE не решает полностью эту проблему, ведь программа которая "инициирует" (посылает во вх. значение канала связи с БД №запроса) запрос с периодом пересчёта канала, который вызывает её шаблон, продолжает это делать, не смотря на то что коннекта к базе нет, и в эти моменты происходит "замирание" всех элементов экрана на 5-10 секунд, а когда оператор управляет объектом это не шутки.
Недавно у нас как раз была такая ситуация, и нам пришлось дать не мало объяснений по этому поводу.
И всё же, не смотря на то что возможно у Вас нет в планах решение этой проблемы, мы убедительно просим занятся этой темой. Мы сейчас даже временно не можем застраховать себя на случай, когда вдруг такая ситуация повторится и что самое страшное, это то что оператор не знает о том что произошло зависание, и считает что процесс протекает в норме.
Нам нужен какой либо признак по которому мы могли бы остановить отработку программы отрабатывающей запрос [Недоумение / Confused] .
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Атрибут I1 - это атрибут под номером 91?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Да, именно он.
 
Posted by Dmitry.niimm (Участник № / Member № 3380) on :
 
И я свой пятачок суну...

В нашем проекте используется две базы данных: локальная на Firebird (основная) и сетевая на MSSQL.

Так как доступ к сетевой базе идет через модемную линию и периодически пропадает, то, дабы не подвешивать монитор, соответствующий канал запроса был вынесен в отдельный поток.

Вот только работать там он не желает:
после подачи на вход номера запроса канал отрабатывает, т.е. аргументы канала изменяются в соответствии с принятыми данными и выставляется время изменения, но отработка не завершается (не сбрасываются в ноль ch.in и ch.r) и канал зависает. Дальнейшие попытки оживить канал путем пихания различных значений в разные атрибуты ни к чему не приводят.

Для проверки тот же самый канал, перемещенный в цикл calc, работает отлично, т.е. дело вовсе не в его кривой настройке.

Вариант "перенести в цикл idle" просьба не предлагать, т.к. это может привести к тормозам в работе с основной (локальной) базой при пропадании сети.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Основная база у Вас находится в потоке Idle?

2. В какой отдельный поток Вы вынесли обмен с сетевой БД?
 
Posted by Dmitry.niimm (Участник № / Member № 3380) on :
 
1. Нет, пока что в основном - сбои по локальной базе маловероятны, а скорость важна. Но хотелось унести сетевой канал в отдельный поток, чтоб не тормозить то, что находится в idle (там работает пара обслуживающих каналов типа пересчета, очистки и статистики).

2. Указали "свой поток", номер 1. Кстати, аналогичная проблема была и при установке периода отработки канала 1 минута (другие варианты не пробовал).

Причем, что характерно, ситуация абсолютно повторяемая и не зависящая от базы данных, т.е. создал новый проект с одним шаблоном запроса к БД, расположенной на локальном компе под управлением Firebird и тремя абсолютно одинаковыми каналами Call.SQL. Единственная разница у каналов - периоды выполнения (1 calc, 1 минута и "свой поток"). Вариант с потоком Idle в тесте не использовался. Запуск осуществлялся вручную через окно просмотра каналов. Из трех каналов корректно работал только тот, что был в основном потоке, а два других зависали после первой отработки.

И, если можно, вопрос не в тему. Куда подевалась техподдержка в Киеве? Уже больше месяца не отвечает ни один телефон. На Вашем сайте изменений их реквизитов не обнаружено...
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1-2. Ситуация подтвердилась, будем разбираться.

По поводу техподдержки: http://www.tracemode.ua/events/nt-distr/
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Здравствуйте Господа!

Вернёмся к нашему вопросу повторно.

В 91-м атрибуте ничего не появляется, т.е. нуль!
Хотя данные с базы RTM успешно получает и количество считанных строк ни как неможет быть равно 0. В чём могут быть причины?
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Уважаемые Господа!

С момента размещения вышеизложенного сообщения прошла неделя!
Есть какие либо соображения по поводу отсутствия информации в 91-м атрибуте?
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Господа!

Может кто нибудь всё таки ответит на этот вопрос?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Проверил на двух разных БД (Access и MS SQL server). Все работает.
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Работать то работает...

Можно тестовый проектик, с любой табличкой БД, для примера, чтоб мы у себя смогли проверить и увидели что нибудь в 91-м атрибуте.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Отправлено
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2