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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.01.2024, 20:38   #1  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Добрый день!
А в каких случаях происходит "порча" таблиц?
Я пока обнаружил только одно событие (правда, с 99% гарантией) - это построение в пакете перекрестных ссылок. Т.е. если:
- во время построения - программировать
- после построения - программировать.
То высока вероятность, что что-то испортится. Понимания пока правда нет, по какому принципу выбирается объект для "порчи".
Однако этот сценарий замечательно лечится:
- исключением программирования при построении перекрестных ссылок (их можно строить на копии приложения)
- рестартом АОСа после завершения построения ссылок (что в общем-то всегда полезно после выполнения крупного пакетника). На копии - вопрос рестарта вообще не стоит.

В начало и завершение построения ссылок легко можно встроить оповещения при необходимости.
__________________
Возможно сделать все. Вопрос времени
Старый 29.01.2024, 22:59   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,889 / 3165 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Однако этот сценарий замечательно лечится:
Это преувеличение.
Он не замечательно лечится. По моим ощущениям, сильно снижается вероятность проблемы, но совсем она не пропадает. Возможно есть еще какие-то сценарии при которых воспроизводится глюк.

Ну и, в общем-то, зачем workaround, за применением которого нужно постоянно следить, следить за рестартами аоса, итп набором ограничений (причем гарантий опять же нет), если возможен более гарантированный способ закрыть лазейку на уровне SQL.


P.S.
Мне показалось, что еще бывает при глобальной компиляции. Но специально я не выяснял.

Еще пару раз видел похожий глюк - затерлись Primary и Cluster индексы на куче табличке при работе AxBuild и параллельном старте аоса. Это немного из другой серии, но похоже.
Старый 30.01.2024, 09:08   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Это преувеличение.
Он не замечательно лечится. По моим ощущениям, сильно снижается вероятность проблемы, но совсем она не пропадает. Возможно есть еще какие-то сценарии при которых воспроизводится глюк.

Ну и, в общем-то, зачем workaround, за применением которого нужно постоянно следить, следить за рестартами аоса, итп набором ограничений (причем гарантий опять же нет), если возможен более гарантированный способ закрыть лазейку на уровне SQL.


P.S.
Мне показалось, что еще бывает при глобальной компиляции. Но специально я не выяснял.

Еще пару раз видел похожий глюк - затерлись Primary и Cluster индексы на куче табличке при работе AxBuild и параллельном старте аоса. Это немного из другой серии, но похоже.
Про глобальную компиляцию соглашусь, т.к. построение перекрестных ссылок суть есть глобальная компиляция + запись данных в XREF*-таблички.
Не... решение понятное, логичное и т.д.

Однако я со своей стороны перестал наблюдать эту проблему иными действиями:
1. Любая глобальная компиляция "обрамляется" рестартами АОСа - до начала, чтобы сбросить весь кэш. И по окончанию, чтобы "прочистить" память. Просто так обычно компиляция не запускается (всё же не на 5 минут) - поэтому лишний рестарт никому не мешает. Опять-таки - любые запуски регламентных операций делаются в скриптах, поэтому +/- одно действие в скрипте никому не мешает (да и время рестарта АОСа несопоставимо с временем глобальной компиляции / построением перекрестных ссылок)

2. Крайне желательно после построения перекрестных ссылок / глобальной компиляции рестартовать все АОСы (если их было несколько). Опять-таки - на рабочей БД ссылки необязательно строить - их туда можно переносить средствами SQL с отдельной среды, приложение которой является полной копией рабочей.

3. Вообще полезно взять за правило рестартовать АОС раз в сутки на DEV-приложении. Во-первых сбрасывается кэш (поля кто-то добавил и т.д.), во-вторых все разработчики с утра зайдут в заведомо "свежее" приложение.

4. С п.3 можно увязать ежедневную сборку CIL на DEV-приложении (заодно все отчучаются оставлять на ночь ошибки компиляции). Это крайне полезно, т.к. в AX2012 полно объектов, требующих актуального CIL-а. При этом следует обратить внимание, как происходит сборка CIL - в память набирается список классов, т.о. после сборки CIL-а для целей высвобождения памяти лучше сделать рестарт АОСа. А до сборки - рестарт нужен для сброса кэша (отлично увязывается с п.3)

5. Ну и конечно нужно забыть о правках на рабочей базе. Максимум - формы / дизайны SSRS-отчетов.

6. Перекрестные ссылки желательно строить на том приложении, на котором:
- никто не работает
- АОС которого не жалко рестартануть по завершению построения ссылок
А перенести данные ссылок легко можно средствами SQL

В общем - при таком подходе проблема "порчи" таблиц исчезает. Учитывая, что сей подход в целом вынужден применяться в связи с особенностью AX2012 - то в общем-то получается и специального решения проблемы не нужно.
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: Logger (5), Dron AKA andy (5), gl00mie (5).
Теги
ax2012, ax2012r2, ax2012r3, map, modelelementdata, table, view

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Sumit Potbhare: AX 2012 R3 | Statement Posting| Part IV: Hotfixes Blog bot DAX Blogs 0 23.06.2017 14:11
stoneridgesoftware: Part I: Configuring the Dynamics AX 2012 R3 Entity Store Blog bot DAX Blogs 0 27.04.2017 12:11
dynamicsaxse: Announcing Cumulative Update 12 for Microsoft Dynamics AX 2012 R3 Blog bot DAX Blogs 0 22.11.2016 13:11
axsa: Extensibility in Dynamics AX 2012 R3 CU8 (CRT, RetailServer, MPOS) Part 2 – New data entity Blog bot DAX Blogs 0 21.05.2015 01:19
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:16.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.