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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.11.2024, 12:40   #1  
Gibrid is offline
Gibrid
Участник
 
1 / 10 (1) +
Регистрация: 17.11.2021
Ax 2012 строит запрос с ошибкой в синтаксисе
Добрый день!
Сколько не искал, похожих проблем как-будто ни у кого не было.
Время от времени аксапта делает до этого работавшие запросы неправильно - с ошибкой в синтаксисе. И получаем ошибку:
Цитата:
Невозможно выбрать запись в Акции по приоритетам (PublicityPriorTempDb). Код акции: 0.
База данных SQL обнаружила ошибку.
Описание ошибки SQL: [Microsoft][SQL Server Native Client 11.0][SQL Server]Неправильный синтаксис около конструкции "(".
Оператор SQL: SELECT TOP 1 T1.PUBLICITYJOURNALRECID,T1.ITEMID,T1.PARTITION,101090 FROM tempdb."DBO".t106966_ACAE536E796A4D7783471D261AF32F8E T1 WITH ( INDEX(i106966_I_106966PUBLICITYJOURNALRECIDX_(null))) WHERE (((PARTITION=?) AND (DATAAREAID=?)) AND (PUBLICITYJOURNALRECID=?))
В запросе ошибка в хинте по индексу WITH ( INDEX(i106966_I_106966PUBLICITYJOURNALRECIDX_(null)).
(null) - быть не должно.

Сам запрос в аксапте выглядит так:
X++:
select firstOnly PublicityJournalRecId from
        PublicityPriorTempDb
            where PublicityPriorTempDb.PublicityJournalRecId == PublicityJournalTableCurrent.RecId
Таблица с индексом выглядит так:

https://ibb.co/vZtBQc1

И свойства таблицы:

https://ibb.co/P5BX7Hj


Ошибка исправляется, если удалить индекс. А потом создать другой с другим именем. Встречалась и на обычных таблицах, не TempDb.

Подскажите, что это может быть? Баг в ядре? Куда вообще смотреть?

Последний раз редактировалось Gibrid; 20.11.2024 в 12:46.
Старый 20.11.2024, 13:32   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
373 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
- Ребут АОСа не помогает ? Те запросы работали, работали, а потом хоп и перестали работать и всегда падает на одной и той же строчке и так до тех пор пока не переименуешь индекс ?

- перед запросом с курсором никакие манипуляции не делаем ? те он просто объявлен, заполнен и потом запрос или все таки что-то есть ?

with означает явную подсказку какой индекс использовать, но в 2012 насколько я знаю такое по умолчанию отключено (есть недокументированная возможность активации, но официальной поддержки такой штуки нет), возможно для tempDB такое работает всегда при использовании инструкций, но как то не верится.

какая у вас версия 2012 ?

вместо null по идее должно быть имя экземпляра таблички, т.е. что то типа 106966_I_106966PUBLICITYJOURNALRECIDX_ACAE536E796A4D7783471D261AF32F8E - а поскольку null то каким то образом ссылка на экземпляр исчезает - запрос генерит ядро, поэтому скорее всего ошибка в нём.

а что с постоянным таблицами, как выглядит текст ошибки - дословно такой же? просто там название индекса всегда фиксированно и _ добавлять не надо в конце
__________________
Sergey Nefedov
Старый 20.11.2024, 14:16   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1192 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
А сама таблица в базе TempDB на момент выполнения запроса существует? Окончание индекса ведь строится по реальному физическому имени таблицы в базе данных TempDB. Если таблицы нет, то какое имя добавлять?

При работе с временными таблицами TempDB рекомендуется сначала выполнить их инициализацию

X++:
   // Force instantiation of Temp DB table.
    select generateonly firstonly RecId from PublicityPriorTempDb;

Это делается в методе RetailUtilities::getPhysicalTableName(). Т.е. код такой получается

X++:
RetailUtilities::getPhysicalTableName(PublicityPriorTempDb);

// Далее код по наполнению временной таблицы


PS: Ну и добавление хинта в запросе - это настойки AOS. Лучше этого не делать. По умолчанию, в dax2012 они отключены.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axsa: MDM Adapter - Extending Dynamics AX 2012 R3 Master Data Management Blog bot DAX Blogs 0 22.05.2014 03:28
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
DAX: How to gain additional value from the Microsoft application platform with Microsoft Dynamics AX 2012 R2 Blog bot DAX Blogs 3 21.06.2013 15:16
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
Dynamics AX Sustained Engineering: Servicing of Dynamics AX 2012 and Dynamics AX 2012 Feature Pack Blog bot DAX Blogs 0 08.05.2012 23:12

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

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

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