|
|
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Привет, коллеги! Хотел бы посоветоваться и поспрошать, авось кто знает: Проблема недюжинная: при обрыве коннекта клиета на середине транзакции сервер делает COMMIT исполненной части, а мине надобно ROLLBACK. Как енто сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2004, 13:22:48 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
А ты попробуй длинную транзакцию и закрой соединение на середине. И увидишь.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:05:52 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Ну сделал транзакцию. Рубанул соединение. Сервер откатил изменения. А приложение случаем не в автокоммите работает ;) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:09:47 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Да нет, конечно. Но работаю через Gemini ODBC Driver ver2.1. Если, не разрывая соединения, откатываю транзакцию, то откатывается все, так что AUTOCOMMIT отпадает....Так что же это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:16:02 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
настройки одбц изучал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:21:30 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Конечно. Выставил ручное управление транзакции. Прикол, что среди официальных функций ODBC не нашел решение вопроса о незавершенной транзакции в случае разрыва соединения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:24:36 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Прикольно ... вернее не очень прикольно ... Я тест крутил через JDBC... Если ситуация гарантировано воспроизводится надо спрашивать разработчиков что самого сервера что этих дров ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:30:08 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
а покажи, мил человек, как ты керуеш транзакциями, плз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:33:16 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Хочешь посмотреть - пожалуйста(текст на VFP7): ON ERROR SQLRollBack(DBHandle) DBHandle=SQLConnect("conn1","sysdba","masterkey") if DBHandle>0 SQLSetProp(DBHandle,"Transactions",2) s1=SQLExec(DBHandle,"INSERT INTO aa (a1,a2) VALUES (1,2)") s2=SQLExec(DBHandle,"UPDATE bb SET b1=2 WHERE b2=3") if (s1>0) .and. (s2>0) SQLRollBack(DBHandle) else SQLCommit(DBHandle) endif endif Текст конечно вымышленный, но принцип тот же...:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 19:40:44 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Winni-Pooh Сколько раз мои пользователи обрывали соединение (причем в наглую - RESET) и ни разу не было COMMIT! Igor ElyasА приложение случаем не в автокоммите работает ;) ? Скорее все что так ! Winni-PoohДа нет, конечно. Но работаю через Gemini ODBC Driver ver2.1. Если, не разрывая соединения, откатываю транзакцию, то откатывается все, так что AUTOCOMMIT отпадает....Так что же это? Gemini ODBC Driver ver2.1 - может как раз в этом и кроется причина ? Попробуй IBX или FIBPlUS - точно поможет ... хотя 'Хочешь посмотреть - пожалуйста(текст на VFP7)' Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 00:04:31 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
а что есть 2 в: Winni-Pooh SQLSetProp(DBHandle,"Transactions",2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 10:25:46 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
То бишь ручное управление транзациями, а не AutoCommit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 19:13:18 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Тебя явно плющит... Если коннект оборвался , то контекст транзакции потерян. Ей никто уже не может сказать COMMIT. Ваааще никто! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2004, 19:34:40 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Однако ситуация есть, я уже перепроверил.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 07:49:44 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Завязывать пора с планом... Того и гляди, слоны полетят косяками... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 11:53:15 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
Вот и план выветрился...Оказывается, дело именно в ODBC. Даже при ручном управлении транзакциями функция SQLDisconnect() делает COMMIT, а Fox допустил ошибку RollBack'a. Щас добавил перед SQLDisconnect() явный SQLRollBack() (кашу маслом не испортишь), и все заработало! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2004, 09:58:15 |
|
||
|
COMMIT при разрыве соединения
|
|||
|---|---|---|---|
|
#18+
а причем тут авторпри обрыве коннекта клиета на середине транзакции??? Какой Rollback ты можешь сделать, если сервера у тебя уже нет??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2004, 10:18:21 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=463&tid=1578307]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 333ms |

| 0 / 0 |
