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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.04.2022, 12:06   #1  
faddy is offline
faddy
Участник
 
6 / 10 (1) +
Регистрация: 02.12.2011
Цитата:
Сообщение от SRF Посмотреть сообщение
Да может конечно и другие какие то проблемы. Обычно какие-нибудь ошибки по месту выглядят как то более вразумительно, но исключать разумеется нельзя.

Насколько я понимаю отчет строится по принципу обхода query и в цикле идет вставка по одной записи или используется recordinsertlist ?

Интересно про 2.5 часа и regular - из 2.5 часов это все время идет обращение к бд, какое время занимает вывод уже готовых данных ?

Номер строки один и тот же на котором идет падение (возможно ли это как то проанализировать, например задав статическую сортировку в основном запросе ? ) С фильтрами по группам - по всем группам формируется отчет без ошибок ?

Я это к чему, возможно вы фильтрами выбиваете какие специфические данные, либо с фильтрами обращение к бд идет менее 45-50 минут.

В целом про какой объем строк в отчет идет речь ?
Отчет строится циклом по query - при этом отрабатывается определенная бизнес-логика сбора-получения дополнительных данных для отчета (необходимых пользователям дополнительных полей) и данные построчно записываются в TempDB таблицу через doinsert().
Пробовали переписать на использование recordinsertlist, но выгоды по времени формирования нет (т.к. основное время тратится на сбор дополнительных данных при заполнении recordinsertlist построчно), а ошибка оставалась.
С фильтрами по группе - первое что пробовали - получить отчет по каждой группе ОС отдельно и он формируется по всем группам без ошибки.
Еще замечено было, что если подобрать определенный список групп, с которым отчет формируется без ошибки, то непосредственно после обновления и перезапуска AOS отчет формируется без ошибки, а через некоторое время с точно таким же фильтром этот отчет падает в ошибку.
Строк в отчете менее 200 тысяч. Удавалось получить отчет без ошибки содержащий около 133 тыс. строк, причем на производственной среде.
На среде DEV ошибку вообще не удавалось воспроизвести и отчет содержал 158 тыс. строк.
Старый 26.04.2022, 08:35   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Мда, если бы ошибка условно проявлялась только на tempdb, то возможно имело бы смысл посмотреть в сторону принудительной очистки времянок на БД (к слову, вот здесь недавно обсуждали Работа с TempDB-таблицами, там есть пара сообщений про изменения в tempdb для ssrs отчетов после которых были некоторые проблемы), поскольку есть повторные падения с одинаковыми параметрами.

Про recordinsertlist я скорее думал в плане сокращений количества вызовов к БД.

Я так понимаю сейчас обработка исключения выглядит - как повторный retry и там снова 40-50 минут и ошибка, да ?

А вот про обработку исключения такая мысль - вы смотрели остаются ли данные во времянке в БД ? Если остаются то возможно имеет смысл продолжить работу с данным экземпляром ?

Можно ли попробовать формировать данные "порциями" - например на каждый 50к-100к создавать отдельную tempdb, а затем их объединять, не знаю сработает ли такой вариант и насколько есть реальная потребность, даже если и заработает, то не понятно как дальше масштабировать (ведь насколько видно из описания дальше кол-во строк скорее всего будет только расти и будет расти время построения отчета).

Возможно имеет смысл посмотреть куда-нибудь в сторону ресурсоемких отчетов - предварительный расчет через ПО с многопоточным режимом, а дальше уже по этим данным формировать отчет.
__________________
Sergey Nefedov
Старый 18.05.2022, 13:19   #3  
faddy is offline
faddy
Участник
 
6 / 10 (1) +
Регистрация: 02.12.2011
Переписал отчет так:
Оставил весь наш код с логикой отчета, заполняющий временные таблицы.
Наследовал новый класс от XMLExcelReport_RU (существующий класс был наследован от SrsReportDataProviderPreProcessTempDB)
Убрал вывод через Reporting Services.
Сделал вывод отчета по "старинке" в файл Excel.

Тестирование показало, что данный вариант отчета формируется без ошибки с такими же параметрами, какие приводят к ошибке при формировании существующего варианта отчета.
Новый вариант отчета сформировался примерно за 4 часа 16 минут, количество строк в отчете 165 091.

По-видимому проблема не в кастомном коде, а в настройках Report Server или же в системном классе, от которого был наследован класс отчета (SrsReportDataProviderPreProcessTempDB, SrsReportDataProviderPreProcess).
Теги
d365fo

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2012 R3 WMDP, Разрешить ввод "<" в поля web-формы (ошибка "A potentially dangerous Request.Form value was detected from the client") RSrd DAX: Программирование 2 27.02.2020 15:19
D365FO - Ошибка "A valid value for parameter "PSAVendorTxt" does not exist" при предварительном просмотре заказа на покупку MarinaAX DAX: Программирование 3 05.09.2017 17:48
"Microsoft Web Browser" ActiveX control, проблема с передачей данных Hyper DAX: Программирование 6 20.09.2010 12:13
Проблема с "lookupField" и "lookupValue". Delfins DAX: Программирование 6 06.07.2009 18:42
Ошибка при присоединении к базе данных serg_ DAX: Администрирование 1 18.11.2008 11:36

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

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

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