05.12.2008, 10:33 | #1 |
Administrator
|
Превышено количество открытых курсоров
Всем привет!
Никто не сталкивался с subj-ем? В 4.0 (по сравнению с 2.5) сообщение почти не изменилось: "Превышен верхний предел Microsoft Dynamics по количеству открытых курсоров (90). Измените параметр -OPENCURSORS или измените код X++". Поиск по форуму дал 2 похожих ссылки: Измените параметр -OPENCURSORS Как закрыть Query (курсор)? Axa2.5 В одном случае был лишний код, в другом - лишний join (=лишний код). Сие сообщение у меня возникает при резервировании определенных товаров при выборе их в заказе на перемещение. Никто сталкивался с возникновением ошибки в похожем месте? Общего ответа не жду (система с модификациями) - в общем-то только лишь интересно - если кто сталкивался с этим именно в этом функционале. Заранее спасибо. 4.0 SP2
__________________
Возможно сделать все. Вопрос времени |
|
05.12.2008, 10:34 | #2 |
Программатор
|
Посмотрите где происходит резервирование. Вроде должно на сервере резервироватся. Тогда этого сообщения не будет. Или я чтото путаю
|
|
|
За это сообщение автора поблагодарили: sukhanchik (4). |
05.12.2008, 10:47 | #3 |
Member
|
Я так и не понял, параметр Maximum open cursors в конфигурационной утилите АОСа вы увеличивали или нет?
Что написано в Eventlog?
__________________
С уважением, glibs® |
|
05.12.2008, 10:59 | #4 |
Программатор
|
Увеличение открытых курсоров мне ктото говорил не есть хорошо. Можно и тыщщу поставить.
|
|
05.12.2008, 11:11 | #5 |
Member
|
Ну... жить, например, опасно, вредно и дорого. Вы же не приняли решение не жить из-за этого?
Так и тут. Ясное дело, что количество нужно увеличивать с умом, а не вляпать там бездумно слишком большое число.
__________________
С уважением, glibs® |
|
05.12.2008, 11:18 | #6 |
Программатор
|
|
|
05.12.2008, 11:42 | #7 |
Administrator
|
Увеличение кол-ва открытых курсоров на АОСе до 1000 не спасало ... Поэтому и написал.
Резервирование вроде происходит на сервере (по кр. мере в стеке вызовов нет клиентских вызовов). Но я детальнее покопаюсь в коде - спасибо за наводку. С другой стороны из почти 18 тыс позиций - проблемными являются только 2 пока. Поэтому и думаю - с чем бы могло это быть связано.
__________________
Возможно сделать все. Вопрос времени |
|
05.12.2008, 11:50 | #8 |
Программатор
|
Если запускатеся класс с этой обработкой, то поставьте у него в совйствах ран он сервер и посмотрите что получится. Вообще такую ошибку видел только раз и то 3 года назад. Как исправили не помню (:
|
|
05.12.2008, 13:10 | #9 |
MCITP
|
Цитата:
В случае тонкого клиента все запросы делаются с сервера, и курсоры соответсвенно там же открываются? Или я что-то я не понимаю?
__________________
Zhirenkov Vitaly |
|
05.12.2008, 13:18 | #10 |
Программатор
|
В случае тонкого - да. Но думаю тут не тот случай.
|
|
06.04.2009, 23:41 | #11 |
Administrator
|
Случайно наткнувшись на ветку - решил написать - "чем дело кончилось".
А кончилось оно тем, что я наткнулся на: 1. Грабли со складскими аналитиками в заказах на пермещение (Что я был не первым - об этом я узнал здесь). 2. Собсно - складская аналитика была не абы какая - а ГТД - т.е. наша российская. Причем с галкой "Физический" (т.е. остатки считать в разрезе ГТД) 3. Неоткомпилированность (глобальная) рабочего приложения (ошибки исчислялись десятками) . Да, увы - и на эти грабли случайно приходится наступать - особенно когда только только знакомишься с приложением, которое модифицировали до меня. Т.е. резюмируя: Система пыталась зарезервировать товар не по той ГТД, но т.к. приложение было некомпиленое - то вместо ошибки - типа "Облом" - система уходила в даун. Повторюсь - приложение с модификациями. Т.е. начинать надо с глобальной компиляции Соответственно, я откомпилировал приложение, получил ошибку - разобрался с ГТД и все встало на свои места.
__________________
Возможно сделать все. Вопрос времени |
|
09.06.2010, 16:20 | #12 |
Участник
|
столкнулись с такой же ошибкой в коде примерно такого вида:
X++: void main() { ttsbegin; updateCompany(mainCompany); ttscommit; } void updateCompany(CompanyNo _companyNo) { ; while select ChildNo from companyTree group by ChildNo where companyTree.ParentNo = _companyNo { this.updateCompany(companyTree.ChildNo); } } |
|
23.07.2013, 10:38 | #13 |
Участник
|
У нас так же случилась такая беда при разноске приходника. Оказалось, что в журнале прихода в ручную изменили дату оприходывания. При этом оприходуемая номенклатура перед этим уже разбежалась по заказы на продажу. И висела там в статусе "Зарезервировано в заказанных". Аксапта отчаянно не понимая такого изврата валилась с ошибкой "Превышен верхний предел Microsoft Dynamics по количеству открытых курсоров (90). Измените параметр -OPENCURSORS или измените код X++". Решилось снятием этого резерва по заказам, разноской приходника и, соответственно, возвратом резервов.
|
|
Теги |
заказ на перемещение, открытые курсоры |
|
|