Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

транзакции IB6   Найти похожие ветки 

 
cf   (2002-11-21 15:52) [0]

Всем привет!
У меня следующая проблема. Пишу приложение, работающее с IB6 через BDE. Выполняю 1-ый SQL запрос, в виде транзакции
Database1.StartTransaction;
- - - Выполняю запрос - - -
Database1.Commit;

После этого сразу же выполняю другой аналогичный SQL-запрос, так же в виде транзакции. Проблема в том, что если такие транзакции идут сразу же друг за другом, то приложение намертво подвисает, показав мне песочные часы SQL. В случае же, если я выдерживаю между транзакциями некую паузу, то все ОК. Перед началом второй транзакции свойство Database1.inTransaction = Falsе.
Подскажите, как мне правильно решить данную проблему.
Заранее благодарен.


 
Alexandr ©   (2002-11-21 15:58) [1]

в общем случае по твоему описанию такой проблемы нет.
Давай подробности.


 
Prooksius ©   (2002-11-21 16:02) [2]

Такого не должно быть.
Вообще-то желательно выполнять эти запросы в одной транзакции.


 
cf   (2002-11-21 16:18) [3]

Подробностей сейчас дать не могу, т.к. исходников под рукой нет.
Но даже, если бы они у меня сейчас были, то там все равно ничего нет особенного. Запросы корректные, по отдельности все работают на ура. Но друг за другом без задержки не хотят.

>Prooksius © (21.11.02 16:02)
>Вообще-то желательно выполнять эти запросы в одной транзакции.
Можно, конечно, но если это и решит проблему, то все равно непонятна причина её возникновения...


 
Victor_Cr ©   (2002-11-21 16:55) [4]

Возможно транзакция выполняеться отдельным потоком. У меня был такой глюк, и от него я избавился путем встаки между транзакциями Application.ProcessMessages


 
cf   (2002-11-21 17:44) [5]

>Victor_Cr ©
OK, попробую!


 
Alexandr ©   (2002-11-22 07:03) [6]

бред.
Как это отдельным потоком?
А ведь говорили, ничего особенного в исходниках нету...


 
Victor_Cr ©   (2002-11-22 10:49) [7]

2 Alexandr © (22.11.02 07:03)

По-моему, при отсылке сообщения на сервер о завершении транзакции, сам сервер обрабатывает некоторое время эти данные и должен отослать клиенту сообщение о ее корректном (или не очень) завершении. И при попытке тут же начать вторую транзакцию клиент может не успеть обработать сообщение сервера. Результат: глючит система. Но это лично мои догадки, т.к. в литературе об этом ничего на сказано (либо я плохо искал).


 
Prooksius ©   (2002-11-22 11:01) [8]

2 Victor_Cr © (22.11.02 10:49)
Нет. Клиент не сможет начать обрабатывать вторую тр-ю, если не закончил работать с первой (имеется в виду один thread).
Например, если твоя 1-я тр-я занимается интенсивной и длительной сборкой мусора, то ты не начнешь 2-ю.



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
3-27861
ALX
2002-11-21 08:58
2002.12.09
как обнулить счетчик поля (Autoincrement)


1-28005
mike-d
2002-11-29 22:05
2002.12.09
Перезапуск приложения


7-28325
Tony'c
2002-09-28 19:59
2002.12.09
Как программно включить удалённый компутер


7-28318
netm
2002-10-09 22:34
2002.12.09
Как добавить путь к своей программе в Win2k?


14-28288
neXt
2002-11-15 16:07
2002.12.09
regsrv32.exe