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

Вниз

Что происходит с транзакцией запущенной на сервере если ADOComman   Найти похожие ветки 

 
jocko ©   (2004-01-17 13:01) [0]

Собственно хотелось бы знать сталкивался ли кто с такой проблемой.
В списке блокировок видим пользователей, у которых есть несколько незавершенных транзакций,на клиенте транзакции не открываются,
серверные процедуры уже перепроверены, источник не нашли, везде есть commit или rollback (кажется :( ),
из множества серверов проблемы только на одном, причем самом нагруженном и то видимо в часы максимальной
нагрузки. Единственная мысль изложена в subject.
Может у кого есть идеи...


 
jocko ©   (2004-01-17 13:40) [1]

Что происходит с транзакцией запущенной на сервере если ADOCommand "отвалился" по timeout?


 
KSergey ©   (2004-01-17 14:06) [2]

Смотря что происходит в программе при этом "отваливании".

Впрочем, не совсем понятно что значит "ADOCommand "отвалился" по timeout". Рвется соединение с сервером или команда просто выполняется больше таймаута?
А где транзакция-то открыта? В ХП или c клента?
1.Если с клиента.
Если рвется соединение с сервером - то транзакция собственно и останется висеть. И не снять ее часто, увы. Если просто выскакивает Exception про таймаут - то, видимо, просто обработать его и откатить транзакцию.
2.Если с сервера (в ХП или запросе)
Думаю, ХП или запрос таки будут дорабатывать до конца не смотря на то, что клиента это уже не интересует, хотя, сказать честно, в этом уже не уверен. Это я не четко знаю.

Вообще, хоть и возникает часто соблазн открывать транзакции с клиента делать этго не стоит никогда, т.к. всегда возможна ситуация подвиса клиента, а значит никакая обработки исключений не позволит транзакцию корректно закрыть (коммитом или откатом). Т.е. транзакции - только! на сервере, в рамках ХП, например.


 
jocko ©   (2004-01-17 14:21) [3]

команда выполняется дольше 30 сек
на клиенте транзакции не открываются


 
jocko ©   (2004-01-17 14:22) [4]

используются только ХП


 
KSergey ©   (2004-01-17 14:41) [5]

Ну в принципе, если более 30 сек считать нормальным для задачи - то может увеличить? Благо ADOCommands это позволяет.
А вообще действительно интересно: что делает сервер с запущенным SQL Batch, если пользователь отвалился? Может кто из монстров подскажет...
Если вы зададите этот вопрос а sql.ru, скажем, киньте сюда ссылку - инетесно что ответят.


 
Nikolay M. ©   (2004-01-19 10:15) [6]


> Что происходит с транзакцией запущенной на сервере если
> ADOCommand "отвалился" по timeout?

Может, я не совсем в сути дела, но у меня при вызове след. ХР вылета по таймауту (в ADOCommand & ADOConnection тайминги минимальны) не произошло, процедура работает около минуты.
Имхо, после запуска ХР на сервере (не)существование коннекта с клиентом на ее работу уже никакого влияния не имеет. Просто на клиенте посыпятся ошибки, а процесс, запущенный на сервере, отработает до конца. А закоммитится он или откатится - это уже зависит от логики ХР.

CREATE PROC pTest
AS

DELETE FROM tTest

BEGIN TRANSACTION

DECLARE
@i integer,
@j integer

SELECT @j = 0
WHILE (@j < 1000)
BEGIN
SELECT
@i = 0
WHILE (@i < 20000)
SELECT @i = @i + 1
SELECT @j = @j + 1
INSERT INTO tTest (f1) VALUES (@j)
END

COMMIT TRANSACTION



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
3-29217
Belocarsk
2004-01-20 12:12
2004.02.10
DataBase Desktop


3-29281
Art76
2004-01-16 17:41
2004.02.10
Проблема с редактированием полей таблицы при вводе русских символ


14-29580
1385
2004-01-19 17:32
2004.02.10
Реально ли на дельфи написать форум? Если да то как?


1-29338
Met
2004-01-29 13:58
2004.02.10
Поиск в нетипизированном файле


14-29594
Лев
2004-01-19 18:23
2004.02.10
Опыть с сетью проблема