|
02.07.2004, 18:22 | #1 |
Участник
|
Измените параметр -OPENCURSORS
Цитата:
Превышен предел Navision Axapta по количеству открытых курсоров (90). Измените параметр -OPENCURSORS или внесите модификации в код X++.
P.S. Курсоры надо закрывать? |
|
25.06.2007, 13:56 | #2 |
Участник
|
А что именно зависит от этого параметра в Аксапте?
И какие действия могли привести к выводу этого сообщения? |
|
25.06.2007, 18:05 | #3 |
Member
|
Цитата:
Сообщение от kashperuk
...
А что именно зависит от этого параметра в Аксапте? ... Цитата:
Сообщение от kashperuk
...
И какие действия могли привести к выводу этого сообщения? ...
__________________
С уважением, glibs® |
|
25.06.2007, 15:57 | #4 |
Участник
|
Интересная тема! на проекте сейчас иногда возникают такие ситуации - это сообщение пишется в системный лог, при этом AOS перестаёт пускать пользователей в систему аргументируя несовместимостью версий клиента и сервера. Подмечено что возникает при накатке мелких модификаций без перестартовки AOS.
|
|
25.06.2007, 18:10 | #5 |
Участник
|
Угу. Вот и я точно так же ответил бы на эти вопросы.
Но на самом деле у нас картина немного другая. Пользователь - 1. Выполняет синхронизацию БД. При этом падает сервер, и пишет в лог такое сообщение. "Подсказка": Приложение скопировано с другой, но оочень похожей инсталляции. База - около 15 Гб. Возможно, конечно, это связано именно с этим, но: 1. раньше проблем не возникало. 2. как это лечить? |
|
26.06.2007, 13:46 | #6 |
Участник
|
Вчера разобрались в чем дело было.
Чтобы другие быстро могли найти "противоядие", объясню, на какие грабли мы наступили: При установке SP5 также был загружен проект "The Enhanced SQL Trace Utility" (по-моему он входет в поставку с SP5). Этот проект собственно и открывал курсоры новые - точнее пытался, что ни к чему не приводило, потому что помимо загрузки проекта необходимо выполнить еще и sql скрипт, который дает определнные права пользователю, под которым запускается бд в Аксапте. К сожалению, решили удалением проекта, так как grant соответствующих прав почему-то не помог. Но еще с этим поиграюсь, возможно удастся решить проблемку "грамотным" путем. |
|
21.09.2015, 10:35 | #7 |
Участник
|
Может кому понадобится.
Сегодня тоже столкнулись с подобной проблемой в форме InventTrans (4.0 SP2) при открытии по номенклатуре, по которой достаточно много проводок. Ошибка появлялась при активной прокрутке грида. Ничего из вышеперечисленного не помогало. Решение нашлось: http://www.programdoc.com/1318_10909_1.htm Суть сводится к тому, что в форме много кэшируемых дисплейных методов. А дисплейный метод оставляет курсор открытым. Закомментировали кэширование методов в Forms - InventTrans - Data Sources - InventTrans - Init(): X++: // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, pcsPrice)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, currencyCode)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, discAmount)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, discPercent)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, unit)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, inventVendCust)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, lineAmount)); // inventTrans_ds.cacheAddMethod(tablemethodstr(InventTrans, qtyUnit)); |
|
|
За это сообщение автора поблагодарили: sukhanchik (2), Logger (3), gl00mie (3). |
21.09.2015, 13:12 | #8 |
Участник
|
|
|
21.09.2015, 13:51 | #9 |
Участник
|
Я из-за этого дела переписал код в классе InventTransReference. Чтобы во всех формах не переписывать. Все перечисленные выше дисплейные методы дергают этот метод.
Axapta 3.0 SP5 X++: server static InventTransReference inventTransReference(inventTrans _inventTrans) { // SysGlobalCache cache = classFactory.globalCache(); // InventTransReference InventTransReference = cache.get(classStr(InventTransReference), funcname(), null); // // if (!inventTransReference || // inventTransReference.inventTrans().recId != _inventTrans.recId) // { // inventTransReference = InventTransReference::construct(_inventTrans); // cache.set(classStr(inventTransReference), funcname(), inventTransReference); // } // // return inventTransReference; // DEM от 28.01.2015 14:26:58 ---> // Из-за превышения по количеству открытых курсоров убрал кеш InventTransReference InventTransReference; ; inventTransReference = InventTransReference::construct(_inventTrans); return inventTransReference; // DEM от 28.01.2015 14:26:58 <--- } Последний раз редактировалось Ace of Database; 21.09.2015 в 13:54. |
|
|
За это сообщение автора поблагодарили: Logger (1). |
21.09.2015, 14:07 | #10 |
Участник
|
хм...
А как бы... Закрывать то их нельзя что ли ? Или использовать один и тот же курсор. |
|