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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.01.2011, 07:50   #1  
NatKo is offline
NatKo
Участник
 
2 / 10 (1) +
Регистрация: 14.01.2008
Адрес: Екатеринбург
Блокировка таблицы LedgerBalancesTransDelta (AX 2009)
Добрый день!

Используется:
Приложение: АХ 2009 (SP1 + RU5)
База: SQL Server 2005

Проблема:
При создании проводок ГК происходит блокировка таблицы LedgerBalancesTransDelta.
Возникает ошибка: Невозможно удалить записть в Сальдо ГК - Аналитики (LedgerBalancesTransDelta). Счет ГК: , . Тупиковая ситуация. Один или несколько пользователей одновременно блокировали всю таблицу или ее часть.

Блокировка происходит периодически при работе у разных пользователей. Воссоздать ситуацию искусственно пока не удалось.

Операции, вызывающие ошибки, самописные, были перенесены с ах3, возможно что-то не учтено при переносе.
Но удаление записей в таблице LedgerBalancesTransDelta происходит в стандартном методе LedgerBalancesTransDelta::deleteTemporaryDeltaRecords(userTTSId, connection). Вызывается метод так же стандартно из класса LedgerVoucher.

В чем может быть проблема?
Старый 14.01.2011, 08:51   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Вот это уже интересно. Модификации на LedgerBalancesTransDelta или классах разноски в ГК есть? Локализовать ошибку (например, посмотреть граф дедлока) не пробовали?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 14.01.2011, 09:17   #3  
NatKo is offline
NatKo
Участник
 
2 / 10 (1) +
Регистрация: 14.01.2008
Адрес: Екатеринбург
Модификаций на самой таблице LedgerBalancesTransDelta - нет.
На классах разноски ГК (LedgerVoucher*) - есть. Добавлена проверка на аналитику ЦЗ и добавлены параметры для LedgerTrans, которые не затрагивают основной логики формирования проводок.
Классы LedgerBalances* - стандартные.

Локализовать ошибку пока нет возможности из-за удаленной работы.
Старый 14.01.2011, 18:41   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Ну, если ничего подозрительного в классах разноски не видно, я бы поизучал граф дедлока и начал с того, что выяснил, с какой операцией (INSERT или DELETE) мы при удалении "схлестнулись"
__________________
-ТСЯ или -ТЬСЯ ?
Старый 20.08.2013, 16:23   #5  
PavelX is offline
PavelX
MCTS
MCBMSS
 
46 / 97 (4) ++++
Регистрация: 08.09.2006
Адрес: Красноярск
Столкнулся с такой же проблемой. Если кому-нибудь понадобится, то решил следующим образом:

В конструкторе класса LedgerBalancesPostingList меняем значение флага isUsingSecondUserConnection:
X++:
    //#define.isUsingSecondUserConnection(false)
    #define.isUsingSecondUserConnection(true)
Далее, для закрепления эффекта можно еще в том же классе поправить метод transferTempDeltaRecsToLedgerBalances:
X++:
//LedgerBalancesTransDelta::transferTempDeltaRecsToLedgerBalances(userTTSId);
LedgerBalancesTransDelta::transferTempDeltaRecsToLedgerBalances(userTTSId, connection);
Благодаря этим изменениям вся работа с таблицей LedgerBalancesTransDelta начинает вестись не через основное клиентское подключение а через отдельное, тем самым время блокировок существенно сокращается.

Честно говоря, я так до конца и не разобрался в чем конкретно была причина данной ошибки. Такое впечатление что при длинных транзакциях таблица LedgerBalancesTransDelta блокировалась целиком. Но тем не менее после этих изменений ошибки исчезли.
За это сообщение автора поблагодарили: Logger (1).
Старый 20.08.2013, 17:10   #6  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
прошу прощения, но это до первого аварийного завершения клиента будет работать?
Старый 21.08.2013, 09:46   #7  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Цитата:
Столкнулся с такой же проблемой. Если кому-нибудь понадобится, то решил следующим образом:
Могу ошибаться пара лет прошла, но что то подобное было и у нас...

Скажите а в БД SQL READ_COMMITED_SNAPSHOT ON?
LedgerBalancesTransDelta OCC = Yes?

Был такой документ Planning database configuration for Microsoft Dynamics AX.pdf
В нем есть ряд рекомендаций по настройке... могу ошибаться, но при переходе с 3.0 на 2009 мы его включили и получили сюрпризы в части доработок 3.0, решили отключить и получили сюрпризы подобные вашим... тогда включили и более не отключали, допиливая доработки 3.0.

Последний раз редактировалось ansoft; 21.08.2013 в 10:17.
За это сообщение автора поблагодарили: PavelX (2).
Старый 21.08.2013, 10:17   #8  
PavelX is offline
PavelX
MCTS
MCBMSS
 
46 / 97 (4) ++++
Регистрация: 08.09.2006
Адрес: Красноярск
Цитата:
Сообщение от trud Посмотреть сообщение
прошу прощения, но это до первого аварийного завершения клиента будет работать?
Не совсем понял вопрос, поясните пожалуйста? Все что изменилось это то что работа с таблицей LedgerBalancesTransDelta стала выполняться через отдельное подключение. Полагаю в самом худшем случае псевдовременные записи из этой таблицы просто не будут удалены если клиент упадет в процессе работы с этой таблицей. Имхо вероятность этого очень мала да и последствия мне кажется не так страшны. Или я что то упустил?

Цитата:
Скажите а в БД SQL READ_COMMITED_SNAPSHOT ON?
LedgerBalancesTransDelta OCC = Yes?
Спасибо, сейчас посмотрел в продакшене действительно READ_COMMITED_SNAPSHOT OFF. Видимо были у клиента причины так сделать.
Теги
ledgerbalancestransdelta, sql 2005, sql server, блокировка, deadlock, ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
semanticax: Dynamics AX 2009 Installation - Application Blog bot DAX Blogs 0 22.12.2010 08:11
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47

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

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

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