![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Еще раз о транзакциях в MSSQL [D6, MSSQL]
ao1973 © (2002-11-23 20:25:00)Друзья ! MSSQL+ADO НЕ ДАЕТ ВОЗМОЖНОСТИ ОТКРЫТЬ
ВЛОЖЕННЫЕ (NESTED) транзакции.пишет "start more transactions on this session".хотя документация по АДО не исключеат эту возможность.Может кто знает ответ?
Заранее благодарю
sniknik (2002-11-24 17:58:00) [1]> почему стандартный интерфейс BeginTrans
а вот это вопрос над которым даже не задумывался никогда. просто считай ADO сервисом доступа к базе (как я) и используй прямые команнды этой базы а не корявый транскрит самого ADO. и все будет чудно.
к одной базе пример подходит на все сто. кстати если трудно привыкнуть к ADOCommand в отношении транзакций импользуй ADOConnection.Execute для посылки этих комманд. для плавного перехода :о)), хотя это без разници.
ao1973 (2002-11-24 16:22:00) [2]Я работаю с одной базой,касаемо транзакций почему стандартный интерфейс BeginTrans не открывает больше одной транзакции?
sniknik (2002-11-24 12:30:00) [3]ADOCommand это для передачи комманд MSSQL самый низкий уровень все остальные компоненты его используют.
а транзакцию осушествляет сам MSSQL для одной базы (локальная) в принципе и коннект неважен только разрыв коннекта (при незавершонной транзакции вроде как ошибка) повлечет за собой Rolbak всех транзакций. короче если связывать (как ты) с ней ADOConnection то да на весь. Но опять же если в этом коннекте изменяются данные из другой базы то моему не прокатит.
ao1973 (2002-11-24 08:46:00) [4]может я неверно высказался. будет ли эта трансакция распостранятся на весь TADOConnection или
только на данный TADOCommand?
sniknik (2002-11-24 00:55:00) [5]какой датасет? где ты его засек?
справку по командам читать в "SQL Server Books Online"
ao1973 (2002-11-23 22:40:00) [6]будет ли эта трансакция распостранятся на весь коннект или
только на данный датасет?
sniknik (2002-11-23 21:45:00) [7]попробуй запросом ее открывать а не методом ADO
примерно
ADOCommand.CommandText:= "BEGIN TRANSACTION TranMain";
ADOCommand.Execute;
ADOCommand.CommandText:= "BEGIN TRANSACTION TranNest";
ADOCommand.Execute;
......
ADOCommand.CommandText:= "COMMIT TRANSACTION TranNest";
ADOCommand.Execute;
ADOCommand.CommandText:= "COMMIT TRANSACTION TranMain";
ADOCommand.Execute;
пока не подводило