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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.07.2013, 12:04   #21  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Мне кажется, лучше копать в этом направлении:
1. Поставить в настройках АОСа галку "Разрешить точки останова для отладки кода Х++, выполняемого на этом сервере.

2. После этого в классе Application начнут автоматически вызываться методы ttsNotifyBegin при начале транзакции и ttsNotifyCommit при завершении транзакции.

3. Модифицируйте эти методы так, чтобы записывать логи. В лог записывайте стек вызовов и значение уровня вложенности транзакции.

4. Анализируйте лог, проверяя стек вызовов и уровень вложенности транзаций, чтобы понять, где непарные ttsbegin\ttscommit

Я данный код написал на коленке прямо в редакторе сообщений.
X++:
void ttsNotifyBegin()
{
             container stackTrace;
             int i;
             str s="";
             UserConnection          userConnection;
             MyLogTable                 MyLogTable;
  ..........................

             if (!inLog) //добавленная в класс Application переменная, чтобы не попасть в рекурсию при вызове userConnection.ttsbegin()
             {
                  inLog = true;
                 stackTrace = xSession::xppCallStack();
                 for(i = 7; i<=conLen(stackTrace); i+=2)
                     s+=strFmt("%1:%2\r\n", conPeek(stackTrace, i), conPeek(stackTrace, i+1));

                 userConnection = new UserConnection();
                 userConnection.ttsbegin();

                 MyLogTable.setConnection(userConnection);

                 MyLogTable.TTSLevel = appl.ttsLevel();
                 MyLogTable.CallStack =  s;
                 MyLogTable.insert();
                 userConnection.ttscommit();
                 inLog = false;
        }
}

Последний раз редактировалось Ace of Database; 16.07.2013 в 12:09.
Старый 16.07.2013, 13:14   #22  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Мне кажется, лучше копать в этом направлении:
1. Поставить в настройках АОСа галку "Разрешить точки останова для отладки кода Х++, выполняемого на этом сервере.

2. После этого в классе Application начнут автоматически вызываться методы ttsNotifyBegin при начале транзакции и ttsNotifyCommit при завершении транзакции.

3. Модифицируйте эти методы так, чтобы записывать логи. В лог записывайте стек вызовов и значение уровня вложенности транзакции.

4. Анализируйте лог, проверяя стек вызовов и уровень вложенности транзаций, чтобы понять, где непарные ttsbegin\ttscommit
[/XPP]
А чем лучше-то? Мы вот пробовали так поступать, но без особого успеха. В этом случае на рабочем приложении начинают писаться довольно большие логи, работа всех пользователей замедляется, а обстоятельства, бывает, долго не складываются так, чтобы "попалась" незакрытая транзакция (некоторые функции могут использоваться, например, раз в неделю, и транзакция может не закрываться только при особых условиях). Вместо того, чтобы заниматься именно задачей устранения незакрытых транзакций, приходится сидеть и ждать у моря погоды.
Теги
ttscomit, best practice

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Чтение только завершенных транзакций. raz DAX: Программирование 4 19.05.2017 10:20
Неверный откат сопоставленных транзакций sgt.Pepper DAX: Программирование 4 17.01.2008 09:16
IMTS (Система множественных складских транзакций) yuranio DAX: Функционал 7 04.03.2005 17:56
Какая связь между Сводным планированием и Система множественных складских транзакций Wamr DAX: Функционал 6 27.09.2004 17:03
Очень частая фиксация транзакций - без этого никак? avzh DAX: Программирование 10 12.07.2004 10:35
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:17.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.