![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
windows2000 и транзакции [D6, IB6.x]
Belkova © (2003-05-30 20:51:00)Мастера Delphi! Подскажите в чем дело? приложение написано под Windiws98, когда установили windows2000 перестали запускаться транзакции, т.е. они запускаются, но всегда Rollback.
sunrider (2003-05-31 01:08:00) [1]А какие наастройки IBTransaction, можно узнать? Кстати попробуй отрубить
try
exception
и посмотри на что ругается. Просто так сервер не откатывается.
Еще попробуй отключить явный старт транзакции и опять же что произойдет
Dred2k (2003-05-30 22:44:00) [2]
> Zacho © (30.05.03 22:36)
Абсолютно логично.
Насчет вопроса: просто механизм exception не совсем очевиден с первого раза в плане конкретного осязаемого применения.
Я тоже по-первой загадками жил... Так что Belkova имеет шанс разобраться по-проще.
Того искренне и желаю! :)
Zacho (2003-05-30 22:36:00) [3]
> Dred2k © (30.05.03 22:21)
Собственно, я и хотел узнать, какая ошибка возникает. И возникает ли вообще.
> Belkova (30.05.03 22:25)
И еще - попробуй те же запросы сделать в чем-нибудь типа IBExpert. И сообщи о результатах.
Belkova (2003-05-30 22:25:00) [4]Dred2k © (30.05.03 22:21)
Большое спасибо, попробую, но наверное уже завтра.
Dred2k (2003-05-30 22:24:00) [5]> Belkova (30.05.03 22:22)
> понятно, что происходит rollback по тому, что данные в
> таблицу не вставляются
Это спорно.
Лучше внимательно протестировать код, а тогда и видно будет...
;)
Belkova (2003-05-30 22:22:00) [6]Спасибо, буду смотреть!
понятно, что происходит rollback по тому, что данные в таблицу не вставляются
Dred2k (2003-05-30 22:21:00) [7]В том-то и проблема, что при некоторых обстоятельствах (возможно, возникающих именно в W2000) никаких сообщений не происходит, а вызывается rollback в виду возникновения какого-либо exception. Советую для начала код вида:
...
uses Dialogs;
...
except
on E : Exception do begin
ShowMessage(E.ClassName + ": " + E.Message);
end;
...
Вот тогда и посмотреть можно.
Zacho (2003-05-30 22:10:00) [8]
> Belkova (30.05.03 21:44)
А как согласуется "приложение commit не делает" c "IBTransaction.commit" ?
А вообще, трудно что-либо сказать. Откуда понятно, что происходит rollback ? Возникает exception ? Если да, то какое сообщение об ошибке ?
Возможно, проблема именно в TIBStoredProc. Смотри http://www.ibase.ru/devinfo/ibstp.htm
Belkova (2003-05-30 22:06:00) [9]В except код такой и есть без явной обработки, если не сложно, то как нужно обработать и почему все-таки под windows98 никаких проблем не возникает?
Dred2k (2003-05-30 22:03:00) [10]Версия очевидна: except без явной обработки.
Тихо выполняется rollback.
Или код будет более подробным?
Belkova (2003-05-30 21:44:00) [11]IBQuery, IBStoredProc
А вообще выглядит примерно так
IBTransaction.StartTransaction
try
вызовы ХП
IBTransaction.commit
except
IBTransaction.Rollback
Zacho (2003-05-30 21:35:00) [12]
> Belkova (30.05.03 21:29)
А должно. Некоторые компоненты доступа к БД сами могут управлять транзакциями неявно, отсюда и возникают подобные проблемы. Во избежание их - надо или явно управлять транзакциями, или хорошо знать механизм работы этих компонент.
Какие компоненты доступа ?
Belkova (2003-05-30 21:29:00) [13]Zacho © (30.05.03 21:22)
приложение commit не делает.
Suntechnic (2003-05-30 21:24:00) [14]Belkova (30.05.03 21:05)
Выход из транзакции всегда по Rollback...
Было бы странно, если бы работало по другому.
Zacho (2003-05-30 21:22:00) [15]
> Belkova (30.05.03 21:05)
Не бывает такого. Транзакциями управляет клиент. Нет никакого "выхода из транзакции". Клиент может сделать либо Commit, либо Rollback. Сама по себе транзакция откатится не может, разве что в результате какого-либо сбоя, например, обрыва соединения.
Приложение делает commit ? Что при этом происходит ?
Belkova (2003-05-30 21:05:00) [16]Выход из транзакции всегда по Rollback, хотя причин для отката вроде бы нет. Выполняю то же самое на другой машине, где стоит Windows98 все работает
Sergey Masloff (2003-05-30 20:59:00) [17]Belkova
>перестали запускаться транзакции, т.е. они запускаются,
отличная фраза. Но штатные телепаты все в отпуске а простые смертные из вашего поста ничего не поняли