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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2018, 10:16   #1  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Использование Like оператора в X++ SQL и кнопка перекомпилировать
Хотел сделать функцию которая подгружает лог компиляции и перекомпилирует его.
Но выяснил, что кнопка "Перекомпилировать всё" не перекомпилирует все объекты, а только некоторые.
В классе SysCompilerOutput.reCompileElement:
X++:
likePath = SysCompilerOutput::buildLikePath('\\');
в результате чего переменная likePath становится равной "\\\\*"(Четыре бэкслеша и звёздочка).

Дальше вызывается запрос:

X++:
    while select forupdate tmpCompilerOutput
        group by UtilElementType, SysUtilElementName
        where tmpCompilerOutput.TreeNodePath like likePath
    {
        compileSetInsert(tmpCompilerOutput.TreeNodePath);
    }
Который отбирает некоторые элементы из лога компиляции, которые будут перекомпилироваться. Но не тот где ошибка есть.

Вопрос: Какие элементы должны быть выбраны этим запросом в чём вообще его смысл - как отработает Like?

Мне кажется что можно было бы заменить его на просто *.

Ещё не совсем понятно если TreeNodePath не указан в group by, почему он использован внутри запроса и что в нём будет?
Старый 02.07.2018, 12:07   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Если мне не изменяет память, то
X++:
like likePath
где likePath == '\\\\*' приведет к фильтрации строчек начинающихся на \

Похоже ради этого все и делалось.
Попробуйте заменить на *. На первый взгляд там нечего сломать.
Старый 02.07.2018, 12:12   #3  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Немного разобрался, судя по всему "\\\\*" выбирает все элементы, но это не точно.
Но лог компиляции получающийся в результате многопоточной компиляции содержит не все поля TmpCompilerOutput, то есть поля UtilElementType вообще нет, оно пустое, а SysUtilElementName равно чему то вроде "\Data Dictionary\Tables" или "\Forms", а именно по ним идёт группировка, В результате получается, что оно компилирует по одной форме, одному классу, одной таблице и так далее.
AX2012 R2.

Лог обычной компиляции содержит все поля.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance - Analyzing key SQL Server configuration and database settings Blog bot DAX Blogs 0 28.09.2015 14:11
aEremenko: Использование прямых запросов SQL Blog bot DAX Blogs 4 18.07.2007 10:09
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00

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

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

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