Показать сообщение отдельно
Старый 24.12.2020, 09:04   #1  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
AX2009 и FETCH API_CURSOR
Друзья, у меня появились вопросы по FETCH API_CURSOR.

Есть некий запрос, допустим:
X++:
while select ledgerTrans
    index hint ACDate
    where ledgerTrans.AccountNum == "AccountNum"
       && ledgerTrans.TransDate  <= 29\02\2020
       && ledgerTrans.Posting    == LedgerPostingType::LedgerJournal
{
    /*что-то там написано*/
}
Аксапта отправляет этот запрос на SQL, дожидается ответа и потом с помощью FETCH API_CURSOR возвращает данные с SQL в AX (возможно ересь написал).
Запрос в SQL выполняется быстро, первую десятку прогонов в цикле тоже быстро, НО потом на каком-то курсоре может зависнуть на десятки минут. При этом местный ДБА говорит, что за FETCH API_CURSOR* скрывается некий запрос который SQL пытается выполнить. Это так? Я всегда думал, что логично сначала выкачать данные, а потом просто по ним пробежаться. Зачем тогда выполнять мелкие под запросы в БД, какой в этом смысле? Может уже ДБА несет ересь?

Кто-то сталкивался с таким поведением FETCH API_CURSOR? Как-то это лечится?
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.