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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.11.2007, 16:24   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,953 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Блокировка таблиц пр InnerJoin
Коллеги, обнаружил что при блокировке forupdate одной из таблиц в джоине блокировка накладывается на все таблицы.

Можно ли как-то избежать этого ?

Пример:
метод
\Data Dictionary\Maps\PriceDiscHeading\Methods\UpdateMultiLineDisc
строка 33, код :
X++:
    while select forupdate priceDiscLine
              where priceDiscLine.salesPurchId  == this.salesPurchId
              join inventTableModule
                   where inventTableModule.moduleType == this.moduleType() &&
                         inventTableModule.itemId     == priceDiscLine.itemId
Приводит к блокировке forUpdate InventTableModule

Возможно ли этого избежать ?

P.S.
Ax 3.0 SP3
Oracle
Старый 26.11.2007, 17:02   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Сделать отдельный while по InventTableModule
Старый 26.11.2007, 17:20   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,953 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Sada Посмотреть сообщение
Сделать отдельный while по InventTableModule
А кроме отдельного запроса ?
Старый 26.11.2007, 17:44   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
а попробуйте
X++:
inventTableModule.selectLocked(false);
выполнить перед запросом.

я не проверял, но вдруг.
Старый 26.11.2007, 17:52   #5  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
А кроме отдельного запроса ?
по мойму этот вопрос затрагивался в статье Еременко про оптимизация складских классов (найти ее к сожалению не смог), но он предлагал решать проблему следующим образом
X++:
    Table       table1;
    Table       table2;

    while select recId from table1
    {
        select forupdate table2
            where table2.recId == table1.recId;

        ...................
    }
ну вот что то типа того

Последний раз редактировалось konopello; 26.11.2007 в 17:53. Причина: правил код
Старый 26.11.2007, 18:21   #6  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Вот я и говорю while влепить
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Владельцы таблиц в БД аксапты AxaptaUser DAX: Администрирование 11 23.05.2007 18:33
Скорее всего блокировка таблиц. Volodymyr DAX: Программирование 15 10.05.2007 18:05
Query из 7 таблиц Cornflower DAX: Программирование 29 15.03.2007 11:27
Блокировка всех таблиц DreamCreator DAX: Администрирование 1 09.08.2005 16:07
Как остановить выполнение InitValue для связанных (innerJoin) таблиц? parovoz DAX: Программирование 8 29.10.2003 19:10

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

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

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