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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.04.2011, 15:58   #1  
BOAL is offline
BOAL
Участник
Аватар для BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
621 / 453 (17) +++++++
Регистрация: 28.04.2003
Адрес: Москва
:( DAX 2009 + SQL2008 ключевые слова, например, StopList недопустимы в названии полей!
Обнаружили (и убили 5 часов, пока локализовали и смогли сформулировать) интересную особенность (багу??)
Проверяли на АХ2009, на Ах4 позже проверим, или сами проверьте и отпишите, плис.

Условия для получения:
БД в СКЛ должна быть в режиме совместимости с скл 2008

Делаем новую таблицу (мы, очевидно, это на нашей давносуществующей таблице нашли, с которой проблем до того не было и данные даже были).
Делаем в ней поле с волшебным именем StopList (история пока умалчивает, какие еще слова - волшебные).
Само по себе название поля вполне невинно, отражает смысл бизнес-процесса и вообще соотв БестПрактису.
Такая табличка не проходит синхронизацию с ошибкой
Описание ошибки SQL: [Microsoft][SQL Native Client][SQL Server]Incorrect syntax near the keyword 'STOPLIST'.

При этом сформированный запрос (из лога ругани АХ) в самом СКЛ КвериАнализере тоже не проходит.
То есть название полей НЕ ДОЛЖНЫ быть служебными словами, то есть АХ не умеет их оборачивать в некие кавычки-скобочки, как должно. Так что ли?

ЛЕЧЕНИЕ:
Поставить БД в режим совместимости с СКЛ 2005 - все ок

ВОПРОС:
Где узнать список этих ключевых слов?
Тк переобзывание поля, даже одно, не так уж просто - в коде на него линки, в формах оно в куче мест.
И сколько еще таких полей "опасны"?

При разработке с нуля все ок, вас сразу пошлет в момент сохранения (сирхронизации) таблицы.
Разработчик будет долго думать, что же не так - надеюсь, этот пост его спасет!

Получается, что поле Select, Where, Join и прочие тоже опасны в скором времени?
Либо, в АХ есть парсер ключевых слов, а о новом СтопЛист оно просто не в курсе.
Тогда это надо лечить в самой АХ, тк поддержка СКЛ2008 не полная.
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 12.04.2011, 16:11   #2  
Evgeniy2020 is offline
Evgeniy2020
Участник
 
309 / 68 (3) ++++
Регистрация: 10.04.2007
Адрес: Москва, САО, СЗАО
в ax 3.0 нельзя создать такой джобик

X++:
static void Job96(Args _args)
{
      int pt;
      ;
}
из за слова pt
Старый 12.04.2011, 16:17   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от BOAL Посмотреть сообщение
Где узнать список этих ключевых слов?
Посмотри класс SysDbInformation. Там есть пример того как система запрашивает у ODBC-драйвера список ключевых слов. (Кстати сам раньше не знал что ODBC-драйвер может такое вернуть). Аксапта всегда использует Native Client 2005ой версии. Рискну предположить что ключевое слово STOPLIST появилось в SQL 2008, и старый native client про него просто не знает.
Старый 12.04.2011, 16:39   #4  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от Evgeniy2020 Посмотреть сообщение
в ax 3.0 нельзя создать такой джобик

X++:
static void Job96(Args _args)
{
      int pt;
      ;
}
из за слова pt
Тут все понятно.
Старый 13.09.2012, 13:21   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от fed Посмотреть сообщение
Рискну предположить что ключевое слово STOPLIST появилось в SQL 2008, и старый native client про него просто не знает.
Только что наступил на те же грабли, но только с ключевым словом COMMIT. Врядли его не было в 2005-ом.

Причём в моём случае аксапта не ругналась в момент добавления поля. И поле c именем COMMIT физически создалось в БД. А вот при удалении этого поля вылезла ошибка "Incorrect syntax near the keyword".
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
dax-lessons: Generate XML Documentation Files for a project - DAX 2009 Blog bot DAX Blogs 0 08.08.2008 19:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
msdynamicsax: Enterprise Portal development in DAX 2009 Blog bot DAX Blogs 0 18.04.2008 07:06

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

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

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