Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вложенные транзакции в ADO [D6, MSSQL]


Best Before 2024 ©   (2002-09-12 12:23:00) 

Скажите, разве нельзя сделать такое
ADOConnection1.BeginTrans;
...

ADOConnection1.BeginTrans; //ругается, что транзакция уже открыта

...
ADOConnection1.CommitTrans;
...
ADOConnection1.CommitTrans;


sniknik   (2002-09-12 16:30:00) [1]

с этой строкой? странно у меня работает, так.
ADOCommand1.CammandText:= "BEGIN TRANSACTION";
ADOCommand1.Execute;
.....

ADOCommand1.CammandText:= "BEGIN TRANSACTION";
ADOCommand1.Execute;
...
ADOCommand1.CammandText:= "COMMIT TRANSACTION";
ADOCommand1.Execute;
...
ADOCommand1.CammandText:= "COMMIT TRANSACTION";
ADOCommand1.Execute;
только что попробовал для данной строки.

хм... проверил соеденение OLE DB тоже работает. ??? когда первый пост положил проверял не работало. только в Access. странно.


Best Before 2024   (2002-09-12 16:17:00) [2]

Project Project1.exe raised exception class EOleException with message "Cannot start more transactions on this session".


sniknik   (2002-09-12 16:06:00) [3]

повторять не надо. привыкай к тому что сейчас есть. :-))


sniknik   (2002-09-12 16:04:00) [4]

ну с той поры вся идеология могла поменятся.
вот попробуй
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DRIVER={SQL Server};SERVER=NIKS;UID=sa;DATABASE=tempdb"
строка с которой у тебя должно сработать, только базы и сервер свой подставь.


Best Before 2024   (2002-09-12 15:58:00) [5]

Нет!
ADO->OLE DB Provider for MSSQL.
и работало. я там NestedLevel анализировал!
До самой смерти буду повторять это!!!!


sniknik   (2002-09-12 15:56:00) [6]

Работало подключение к MSSQL? или всетаки к чему другому?
А может потому работало что подключение было ADO -> ODBC -> MSSQL, так сделай также и у тебя в дельфях будет работать.


Best Before 2024   (2002-09-12 15:40:00) [7]

ADO не виновато.
Меня удивляет, что в VB все работало. У VB поддержка ADO 2.6, а вот Delphi что делает - непонятно


sniknik   (2002-09-12 15:36:00) [8]

вряд ли тут ADO виновато
т.к описанная ситуация срабатывает при подключении к ACCESS а вот если MSSQL то почему то только в одном блоке работает
BEGIN TRANSACTION
BEGIN TRANSACTION
COMMIT TRANSACTION
COMMIT TRANSACTION
разрывать не позволяет.
я правда SQL -ем пользовался а не через ADOConnection1.BeginTrans; хотя это одно и то же.


Best Before 2024   (2002-09-12 14:38:00) [9]

2 Shaman_Naydak © (12.09.02 14:24)
Да ради бога, пусть откатываются все!
Я не могу начатьвложенную транзакцию


Shaman_Naydak   (2002-09-12 14:24:00) [10]

Ну что я могу сказать..
ADO - универсальная оболочка для доступа к данным..
А вложенные транзакции - то, какая будет реакция зависит от используемого провайдера..
Например, для провайдера MS SQL сервера реакция будет такая:
Вложенные транзакции разрешены, но их нет :). То есть если у тебя произошел Rollback где-нибудь внутри 5-й транзакции, откатятся все


Best Before 2024   (2002-09-12 14:10:00) [11]

?


Best Before 2024   (2002-09-12 13:56:00) [12]

Где все знатоки?


Best Before 2024   (2002-09-12 13:03:00) [13]

Нигде не написано, что этого делать нельзя.
Более того, на VB у меня все это проходило нормально.
Что-то Delphi не очень дружит c ADO. Сделали какую-то обертку и все.


Best Before 2024   (2002-09-12 12:43:00) [14]

Зачем тогда BeginTrans возвращает Level ???


ЮЮ   (2002-09-12 12:42:00) [15]

Нельзя, раз ругается? А смысл вложенной транзакции?
Если устроят внешние изменения при откате внутренних, то сделать внутренние в сторонке, после выполнения внешних.


Johnmen   (2002-09-12 12:41:00) [16]

И что же здесь удивительного ? Одно соединение - одна тр-ция.


Best Before 2024   (2002-09-12 12:37:00) [17]

???


Наверх

Титульная страница Поиск, карта сайта Написать письмо