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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.02.2009, 15:53   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Аудит блокировок
Переодически возникают блокировки по InventSum и по InventTrans.
Можно ли средствами Axapt-ы где нибудь посмотреть эти блокировки?
Нужна информация были ли блокировки за последний месяц по заданной номенклатуре.
Если так нельзя.
То как это можно настроить или запрогроммировать чтоб за следующий месяц была такая информация.
Заранее спасибо.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 11.02.2009, 16:34   #2  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
\Classes\JournalCheckPost\runDeadLock

впишите туда свой код, который записывает в некоторую таблицу тип журнала, время и тп...

на правах пердположения) сам не пробовал...
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 11.02.2009, 17:00   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Администрирование - Запросы - База данных - Журнал трассировки операторов SQL

Туда попадают Deadlock и долгие запросы.
Deadlock - всегда идет по причине блокировок.

Долгий запрос тоже может быть следствием блокировки, поэтому можно просто наложить фильтр по этому логу и проанализировать записи.
Старый 11.02.2009, 18:30   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Не представляю даже как такое можно сделать в разрезе номенклатуры...

Долгие запросы и дедлоки - это хорошо, конечно, но никакой информации по исходному вопросу не дают.

Более того, отследить тот факт, что данный долгий запрос долго работал долго из-за того, что ждал блокировки можно, насколько я понимаю, только на уровне БД. Для таблицы в целом...
__________________
Zhirenkov Vitaly
Старый 11.02.2009, 19:12   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от ZVV Посмотреть сообщение
Не представляю даже как такое можно сделать в разрезе номенклатуры...

Долгие запросы и дедлоки - это хорошо, конечно, но никакой информации по исходному вопросу не дают.

Более того, отследить тот факт, что данный долгий запрос долго работал долго из-за того, что ждал блокировки можно, насколько я понимаю, только на уровне БД. Для таблицы в целом...
Ну конечно я предложил не гарантированный вариант, но хоть что-то.
А отфильтровать по таблице использованной в запросе можно.
Пример во вложении.
Миниатюры
Нажмите на изображение для увеличения
Название: SysTraceSQL.JPG
Просмотров: 426
Размер:	53.3 Кб
ID:	4304  
Старый 11.02.2009, 21:02   #6  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
С учетом того, что блокировка может накладываться не только на запись, но и на страницу, экстент, таблицу или ключ индекса, решение данной задачи мне кажется невозможным.

Ну и не совсем понятно, что даст на практике такая информация.
Старый 11.02.2009, 21:47   #7  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Андре Посмотреть сообщение
С учетом того, что блокировка может накладываться не только на запись, но и на страницу, экстент, таблицу или ключ индекса, решение данной задачи мне кажется невозможным.
Можно в info\add в файл писать весь инфолог.
При обновление этих таблиц всегда setPrefix на номенклатуру есть.
Цитата:
Сообщение от Андре Посмотреть сообщение
Ну и не совсем понятно, что даст на практике такая информация.
Да у меня остатки расходяться с проводками.
Написал джобик он недолго работает 10 минут.
Раз в неделю запускаю 6-8 позиций исправляет.
Но надо решать эту проблему.
Есть подозрения что это из-за блокировок.
Хотю удостовериться в этом или в обратном.
Есть мысль на inventTrans insert и update некую проверку повесить на время поиска откуда ноги растут.
Но очень хочется, чтоб это оказалось из-за блокировок.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 11.02.2009, 22:03   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Миша, лучше попытаться найти doUpdate по InventTrans или InventSum
Где-то на форуме было как это через перекрестные ссылки найти.
Старый 12.02.2009, 02:22   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Wamr Посмотреть сообщение
Миша, лучше попытаться найти doUpdate по InventTrans или InventSum
Где-то на форуме было как это через перекрестные ссылки найти.
Как отловить отладчиком DoUpdate, DoDelete?
Старый 12.02.2009, 09:31   #10  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Wamr Посмотреть сообщение
Миша, лучше попытаться найти doUpdate по InventTrans или InventSum
Где-то на форуме было как это через перекрестные ссылки найти.
И что мне это даст?
Нужен трэйс. А для трэйса сначала надо локолизовать проблему.
Это редко происходит.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 13.02.2009, 09:25   #11  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
ГТД не является правильной складской аналитикой. Не стоит её считать таковой и использовать. Если вы сравните в коде ГТД с любой другой аналитикой, вы все поймете.
Старый 13.02.2009, 09:31   #12  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от raz Посмотреть сообщение
ГТД не является правильной складской аналитикой. Не стоит её считать таковой и использовать. Если вы сравните в коде ГТД с любой другой аналитикой, вы все поймете.
Вечером попробую с другой аналитикой.
Но насколько я понял, что в кишках происходит, ГТД тут не причём, этот эффект должен и на других аналитиках повториться.
Просто он мне подруку подвернулся.
Да и забыл написать как исправил:
InventUpd_Estimated\updateDepreciateReceipt()
Место
X++:
    while select forupdate inventTrans
        index hint TransIdIdx
        order by statusReceipt desc,inventRefTransId,inventDimId desc
        where inventTrans.inventTransId         == movement.transId()               &&
              inventTrans.transChildType        == movement.transChildType()        &&
              inventTrans.transChildRefId       == movement.transChildRefId()       &&
              inventTrans.statusIssue           == StatusIssue::None                &&
              inventTrans.statusReceipt         >= StatusReceipt::Ordered           &&
              inventTrans.statusReceipt         <= StatusReceipt::QuotationReceipt
поставил
X++:
    while select forupdate inventTrans
        index hint TransIdIdx
        order by statusReceipt desc,inventRefTransId,inventDimId
        //order by statusReceipt desc,inventRefTransId,inventDimId desc
        where inventTrans.inventTransId         == movement.transId()               &&
              inventTrans.transChildType        == movement.transChildType()        &&
              inventTrans.transChildRefId       == movement.transChildRefId()       &&
              inventTrans.statusIssue           == StatusIssue::None                &&
              inventTrans.statusReceipt         >= StatusReceipt::Ordered           &&
              inventTrans.statusReceipt         <= StatusReceipt::QuotationReceipt
Не знаю у всех так или нет, но в силу наших бизнес процессов.
InventDimId без ГТД появляются раньше. Следовательно между ними такая связь.
InventDimId(без ГТД) < InventDimId(с ГТД)
Этим и воспользовался. Просто сортировку поменял.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.

Последний раз редактировалось miklenew; 13.02.2009 в 09:36.
Старый 13.02.2009, 09:55   #13  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Насчет ГТД... давно это было, ну и уже не помню что там с ней не так, но как минимум нужно в группу полей InventDimensions на InventDim добавить ГТД. Помоему еще что то в коде криво сделано. Может уже исправлено. Мы же стараемся не использовать ГТД как складскую аналитику.

На всякий случай... у нас AX3 SP4.
За это сообщение автора поблагодарили: Logger (2).
Старый 28.02.2009, 20:39   #14  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Джобец
X++:
// GRD_fixQueryValue_pkoz    // pkoz 27.02.2009
static void Job463(Args _args)
{
    int         dd;
//    str         data;// = 27\02\2009;
    date        data = dateNull();
//    date        data = 27\02\2009;
    vendTable   vendTable;
    Query       Query;
    QueryRun    qr;

    str getRange()
    {
        ;
        //return date2strXpp(data);
        return
            strFMT( '((%1==%2))',
                        fieldStr(vendTable, modifiedDate),

                        //QueryValue(data) // с таким параметром кривая дата будет пр использовании расширенных запросов
                        date2strXpp(data) // а при таком все нормально
                        )
        ;
    }
    void qu(boolean _lit, boolean _ext, str _s)
    {
        boolean     good;
        ;
        //info("");
        Query = New Query();
        if (_lit)
            Query.literals(1);

        if (_ext)
            Query.addDataSource(tableNum(vendTable)).addRange(fieldNum(vendTable,
                //modifiedDate
                recId
                )).value(
                getRange()
                );
        else
            Query.addDataSource(tableNum(vendTable)).addRange(fieldNum(vendTable, modifiedDate)).value(QueryValue(data));

        info(Query.dataSourceNo(1).toString());
        qr = New QueryRun(Query);
        good = qr.next();
        info(strFMT("%3 Литералы %1, Расш запрос %2,  recId = %4", _lit, _ext, good ? "Есть результат" : "Нет результата", good ? qr.getNo(1).RecId : 0));
        info("");

        //info("");

    }
    ;
    setPrefix("Оператор SQL");
    info(getRange());

    //GRD_SqlTraceOn();
    //info("");

    qu(0, 0);
    qu(0, 1);
    qu(1, 0);
    qu(1, 1);
    //info("");
    //GRD_SqlTraceOff();

}

Как вы и предполагали, проблема связана с использованием -Internal=NoCursorReuse
Без использования этого ключа логирование может выдавать неверную информацию. modifiedDate - ни при чем

При изменении даты фильтрации
X++:
date        data = dateNull();
- логирование показывает значение которое использовалось в первый раз. Запрос на БД в любом случае правильный уходит.
За это сообщение автора поблагодарили: ZVV (1).
Теги
internal, блокировка, лог, поиск ошибок, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Главная книга / Запросы / Аудит (TransactionLog) Зачем и кому он нужен? ta_and DAX: Функционал 18 24.09.2008 10:14
Эскалация блокировок в MSSQL fomenka DAX: Администрирование 6 24.04.2007 06:02
сброс блокировок при update somebody DAX: Программирование 3 27.03.2007 11:31
?Аудит пользователей Axapta Gray DAX: Администрирование 4 09.06.2004 07:08
Описание функциональности модуля "Аудит действий пользователей системы" D.Cheprasov DAX: Прочие вопросы 2 22.03.2004 04:32

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

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

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