Я ищу способ указать пользовательский уровень транзакций в DBX Delphi с помощью драйвера firebird.Я использую Delphi XE.
В редакторе параметров компонента TSQLConnection я могу установить различные значения TransIsolation, и я использую значение по умолчанию ReadCommited
.Свойство WaitOnLocks
имеет значение True
.Я ожидаю, что это использует следующую конфигурацию транзакции Firebird, но я не уверен:
READ WRITE + WAIT + SNAPSHOT
(см. http://www.firebirdsql.org/refdocs/langrefupd20-set-trans.html)
Я хотел бы использовать LOCK TIMEOUT [seconds]
вместо WAIT
.Но я не могу найти, как или где это указать. Я посмотрел в исходных файлах DBX и есть некоторый код для пользовательских уровней транзакций (поиск xilCUSTOM
), но он кажется незаконченным / неиспользованным.
Причина этого в том, что мы иногда сталкиваемся с тупиком в нашем многопользовательском приложении datasnap, и я думаю, что это происходит потому, что одна транзакция ожидает другую (возможно, мертвую) транзакцию. У нас скорее будет разрыв транзакции через пару секунд, чемвесь клиент зависает до бесконечности.