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

Вниз

Транзакция на стороне клиента   Найти похожие ветки 

 
Hooch ©   (2004-02-09 14:19) [0]

День добрый !
Как в хранимой процедуре можно узнать что транзакция стартована с клиента ? т.е. на клиенете пишем


adoConnection.BeginTrans;
if adoConnection.InTransaction then
try
adoConnection.Execute("test");
adoConnection.CommitTran;
except
adoConnection.RollbackTrans;
end;


процедура test


create procedure test as
begin
if @@TranCount = 0
raiserror("no tran", 16, 10)
end


в результате выполнения на клиенте получаем "no tran"


 
KSergey ©   (2004-02-09 14:22) [1]

Сказать по-правде, хоть это и не ответ на вопрос, но лучше уж тогда на сервере же транзакциями и рулить, а не пускать их с клиента...
А вообще, конечно, занятно...


 
Hooch ©   (2004-02-09 14:31) [2]


> но лучше уж тогда на сервере же транзакциями и рулить, а
> не пускать их с клиента


отсюда вопрос и пошел, начал переносить транзакции на сервер, и случайно напоролся на такой странный эффект


 
KSergey ©   (2004-02-09 14:33) [3]

Значит забыть об нем как о страшном сне и не пользовать в дальнейшем ;) На неувязочку плюнуть - есть и другие задачи.
Хотя поразбираться и занятно ;)


 
VLAD-MAL   (2004-02-09 15:07) [4]

Типа, э ...
Ответ:
Ну, раз мы уже в процедуре, то кто-то на клиенте транзакцию все-таки стартанул :)

А транзакции на сервере не запустишь. Они ж транзакции, их родители - всегда коиенты.
Может, тебя интерусиет что-нибудь другое, типа с какого компьютера было подключение?


 
Nikolay M. ©   (2004-02-09 15:52) [5]


> А транзакции на сервере не запустишь. Они ж транзакции,
> их родители - всегда коиенты.

С какого потолка взят этот бред? Или я понял не то, что тут имелось ввиду?

По сабжу: как вариант, можно сделать в процедуре дополнительный параметр-флажок, который будет указывать, запущена процедура с клиента или с сервера.
А вообще мне лично непонятен смысл сих манипуляций, не говоря уже о ненадежности варианта, когда транзакциями рулит клиент.


 
VLAD-MAL   (2004-02-09 15:55) [6]

2 Nikolay M. © (09.02.04 15:52) [5]

С какого потолка взят этот бред? Или я понял не то, что тут имелось ввиду?



Вы не согласны?


 
ZrenBy ©   (2004-02-09 15:58) [7]

Я не согласен с VLAD-MAL
Я согласен с Nikolay M.

А транзакции на сервере не запустишь. - это бред


 
VLAD-MAL   (2004-02-09 16:00) [8]

Ну, за удачу!


 
Nikolay M. ©   (2004-02-09 16:31) [9]


> VLAD-MAL (09.02.04 15:55) [6]
> 2 Nikolay M. © (09.02.04 15:52) [5]
> С какого потолка взят этот бред? Или я понял не то, что
> тут имелось ввиду?
> Вы не согласны?


Нет, конечно.
BEGIN TRANSACTION
ROLLBACK TRANSACTION
COMMIT TRANSACTION
из T-SQL reference о чем-нибудь говорит?


 
VLAD-MAL   (2004-02-09 16:41) [10]

Ох-хо-хо.


 
Sandman25 ©   (2004-02-09 16:45) [11]

Есть ХП генерации документа. Есть 2 варианта использования данной ХП - либо она запускается независимо (и тогда транзакция должна быть начата и закончена самой ХП-ой), либо она запускается из другой ХП, которая кроме вызова первой ХП сама тоже работает с БД (документ из первой ХП становится частью группы документов). Во втором случае транзакция начинается и заканчивается из "внешней" ХП.
В качестве решения используется дополнительный параметр ХП, как предлагал и
[5] Nikolay M. © (09.02.04 15:52). В случае возникновения исключения ХП проверяет по параметру, следует ли откатывать транзакцию, или это сделает внешняя процедура.



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

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

Наверх




Память: 0.49 MB
Время: 0.01 c
6-12471
Novenkij
2003-11-24 13:52
2004.03.05
Как узнать работает ли машина ?


7-12555
задолбался подбирать имя
2003-12-14 09:30
2004.03.05
WinRar


1-12406
Kraj
2004-02-25 16:44
2004.03.05
Как отловить нажатие русских букв


7-12562
BlackTiger
2003-12-17 11:55
2004.03.05
COM2 под Windows98... Где грабли зарыты?


14-12518
malkolinge
2004-02-12 16:06
2004.03.05
Возрадуйтесь !!!!!!!!!! Фаронов пишет новую книгу