AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.11.2011, 16:55   #1  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Регистрация: 02.04.2010
Параллельная транзакция
Товарищи, приветствую!
Возникла задача, ищу пути решения.
Суть задачи в следующем. Есть некая таблица АХ. В таблице перекрыты методы CUD. В перекрытых методах вызывается метод класса, который, в свою очередь должен сделать запись в лог вида RefTableId-RefRecId. Проблема в том, что запись в лог происходит в рамках транзакции CUD и если возникает ошибка, то запись в логе, естественно, не сохраняется, т.к. все транзакции откатываются...

Есть ли способ открыть параллельную транзакцию и записаться в лог? Чтобы запись в нем гарантированно осталась, независимо от исхода транзакции CUD.
Старый 30.11.2011, 17:38   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,941 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Надо открыть еще одно соединение к базе и в нем сделать запись в лог.
Только нужно аккуратно это делать, чтобы самому себя не заблокировать.
Посмотрите для примера семейство классов NumberSeq
Старый 07.12.2011, 16:39   #3  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
?
Цитата:
Сообщение от Logger Посмотреть сообщение
Надо открыть еще одно соединение к базе и в нем сделать запись в лог.
Только нужно аккуратно это делать, чтобы самому себя не заблокировать.
Посмотрите для примера семейство классов NumberSeq
Просто интересно, а каким образом можно самому себя заблокировать, вставляя запись в отдельную таблицу лога в параллельной транзакции?
__________________
Zhirenkov Vitaly
Старый 07.12.2011, 17:22   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,941 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от ZVV Посмотреть сообщение
Просто интересно, а каким образом можно самому себя заблокировать, вставляя запись в отдельную таблицу лога в параллельной транзакции?
Наверно, никак.
Это я людей на всякий пожарный случай попугал, чтобы внимательнее с отдельными соединениями работали. А то если из дополнительного соединения кроме лога еще что-нить пообновлять, то можно словить кучу блокировок. Или наоборот если из основного соединения лог обновлять.

Пример тут :
Блокировка NumberSequence
За это сообщение автора поблагодарили: gl00mie (2).
Старый 08.12.2011, 01:59   #5  
Omeo is offline
Omeo
Участник
 
129 / 50 (2) ++++
Регистрация: 18.03.2004
Адрес: Moscow
X++:
UserConnection          userConnection;

userConnection = new UserConnection();
userConnection.ttsbegin();
logTable.setConnection(userConnection);
logTable.clear();
.....
logTable.insert();
userConnection.ttscommit();
За это сообщение автора поблагодарили: Logger (3), Kabardian (4), AlexeyVS (1).
Старый 08.12.2011, 10:46   #6  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Регистрация: 02.04.2010
Спасибо за помощь! То что надо!
Теги
транзакции

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Одна открытая транзакция - одна запись в журнале DenisR DAX: Программирование 4 09.03.2017 14:27
Параллельная разноска нескольких журналов несколькими пользователями. bobski DAX: Функционал 8 31.07.2009 10:34
Параллельная обработка данных Volodymyr DAX: Программирование 10 08.05.2008 20:49
Транзакция в modified Gad DAX: Программирование 1 29.11.2005 19:54
Глобальная транзакция Yuri Safronov DAX: Программирование 4 18.09.2002 11:52

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:45.