Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
Внизтранзакции 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c