Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Вниз

Что происходит с транзакцией запущенной на сервере если 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-29449
electronic
2004-01-30 18:16
2004.02.10
CD + запись в файл


1-29306
rexelf
2004-01-30 11:13
2004.02.10
как определить проинсталлирована ли прога...


1-29314
elected
2004-01-30 00:09
2004.02.10
Как сделать виртуальный файл.


7-29638
KPPL
2003-11-22 22:35
2004.02.10
Printer


14-29532
@lex
2004-01-22 16:09
2004.02.10
Хакамаду здесь недавно обсуждали





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский