PowerBuilder: отключить базу данных при простое

У меня есть приложение в PowerBuilder, и многие пользователи не используют его часами. Иногда операцию забывают зафиксировать; поэтому некоторые таблицы остаются заблокированными на неопределенный срок, что мешает всем работать. Я попытался поставить все коммиты на место, но отладить это в таком большом приложении очень сложно. Я хотел бы отключить соединение с базой данных, когда приложение простаивает. Это несложно, но моя проблема в том, что при прикосновении к мыши или клавиатуре приложению необходимо повторно открыть соединение. Как я могу это сделать? Недопустимо закрывать приложение каждый раз, когда оно простаивает.


person carlo.borreo    schedule 19.03.2013    source источник


Ответы (2)


Прежде всего, я бы рекомендовал вам не выбирать легкий путь и приступить к закрытию всех этих транзакций. Если у вас есть что-то незафиксированное, кроме проблемы с блокировкой, вы понятия не имеете, будет ли следующий оператор, который случайно будет выполнен, будет COMMIT или ROLLBACK, и какой из них сейчас необходим. По моему опыту, такое расследование всегда выявляет другие проблемы, связанные с транзакцией. Эта проблема, вероятно, больше, чем замки.

Что касается повторного подключения, если вы идете по этому пути (очевидно, это не мой первый выбор), я бы порекомендовал альтернативный вариант: ПОДКЛЮЧИТЬСЯ, когда вам нужно подключение в следующий раз. По сути (если вы собираетесь инкапсулировать код внутри функции в объекте транзакции):

IF DBHandle() = 0 THEN CONNECT using THIS;

Если у вас есть такая среда, как PFC, то, скорее всего, у вас будет всего несколько мест для кода. Если у вас нет фреймворка, который инкапсулирует такие части работы, как извлечение и обновление, то вы наверняка пожалеете об этом. Тем не менее, это может быть лучше, чем снижать производительность, проверяя соединение с базой данных при каждом нажатии клавиши и движении мыши.

Удачи,

Терри.

person Terry    schedule 20.03.2013
comment
Терри, можно поконкретнее? Ошибка, связанная с зависанием приложения при простое, — это самая раздражающая вещь, которую мы унаследовали после перехода с SQL Server 2000 на 2005/8 (с MSS на SNC). - person PanosPlat; 20.04.2013
comment
@PanosPlat: мне не совсем понятно, о чем вы просите разъяснений. - person Terry; 22.04.2013

Захватите движение мыши и ключевые события. Когда один из этих пожаров, выполните CONNECT; утверждение.

Видеть:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc37781_1150/html/psref/BFCCFFGH.htm

person Michael Harmon    schedule 20.03.2013