Главная страница
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
14-28211
Aristarh
2002-11-16 02:17
2002.12.09
Кто сейчас на форуме?


14-28254
Ketmar
2002-11-16 20:35
2002.12.09
я сильный....


4-28368
Axis_of_Evil
2002-10-28 09:37
2002.12.09
Памагитя!


14-28196
Оливейра
2002-11-16 17:19
2002.12.09
Hostmos.ru


14-28267
VEG
2002-11-18 20:47
2002.12.09
Наш любимый чат...