А есть ли в Axapta возможность очистить кэш запросов ???
Была такая ситуация (Axapta 2.5 sp4):
При выполнении функции коррекции накладных расходов по закупке
(Счет Фактура -> Накладные расходы -> Коррекция -> Вводим Сумму -> OK) клиент зависал. Трассировка в отладчике показала, что виснет запрос:
<div class='XPPtop'>X++</div><div class='XPP'> [color=:blue]while[/color] [color=:blue]select[/color] [color=:blue]forUpdate[/color] inventTrans
[color=:blue]where[/color] inventTrans.inventTransId [color=:blue]==[/color] vendInvoiceTrans.inventTransId &&
inventTrans.dateFinancial [color=:blue]==[/color] vendInvoiceTrans.invoiceDate &&
inventTrans.invoiceId [color=:blue]==[/color] vendInvoiceTrans.invoiceId &&
inventTrans.statusReceipt [color=:blue]==[/color] StatusReceipt::Purchased &&
inventTrans.statusIssue [color=:blue]==[/color] StatusIssue::None &&
inventTrans.packingSlipReturned [color=:blue]==[/color] 0 &&
! inventAdjustAllocate.isAllocated()</div>
в методе MarkupAdjustment.adjustInvoice()
Обновление статистики командой update statistics InventTrans не помогло.
После добавления в запрос хинта forceliterals запрос стал нормально выполняться
Единственное объяснение, приходящее на ум, что однажды запрос был построен с неоптимальным планом исполнения и этот план был закэширован.
Вопрос: как сбросить кеш для ВСЕХ планов исполнения ?
|