|
|
|
Cursor not open
|
|||
|---|---|---|---|
|
#18+
ASA 9.0.2.3044 Клиент подключается через ODBC. Приложение только вызывает SP которые возвращают resulset. С недавних пор при вызове процедур стали появлятся следующие ошибки. На какой то вызов (произвольной) процедуры выдается "Cursor not open", а далее на все последующие обращения завершаются с "Cursor already open". Сами процедуры курсоров не используют, за исключением одной в которой есть цикл for. Снял лог с сервера. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: plaintext 1. 2. 3. 4. При чем есть инсталяции с намного большей нагрузкой. Из изменений на компьютерах только обновления Windows. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 16:29 |
|
||
|
Cursor not open
|
|||
|---|---|---|---|
|
#18+
Зверь знакомый. Значится так, просмотрите ВСЕ ВОЗМОЖНЫЕ выходы из процедуры. Где то есть , или RETURN или GOTO, выводящий на завершение. Вот перед ними поставьте CLOSE CURSOR_NAME и deallocate cursor CURSOR_NAME . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 14:25 |
|
||
|
Cursor not open
|
|||
|---|---|---|---|
|
#18+
KOLCHOZ_POSTEVENTЗначится так, просмотрите ВСЕ ВОЗМОЖНЫЕ выходы из процедуры. Я привел полный текст конкретной процедуры. Одна строчка - выборка из реальной таблицы(не view). Сейчас сделал явное перечисление всех полей resulseta. Это одна процедура у которой они явно не заданы. Курсоры используются только в одной другой процедуре как Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Эта функция тоже вызывается достаточно интенсивно, но на ней такого поведения пока не замечено. И еще все это работало и продолжает работать на других инсталляциях с большей нагрузкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 14:53 |
|
||
|
Cursor not open
|
|||
|---|---|---|---|
|
#18+
Синтакс какой-то незнакомый. Но так, интуитивно, сделать бы закрылку после end for, а чо, есть не просит. У моих клиентов такое сообщение появилось, когда вышли на продакшн , а там хлынули данные, коорые выносили процедуру на останов, перепрыгивая через CLOSE и DEALLOCATE. Ну, клиенты сразу полезли на каланчу, типа, ты чо с сервером сделал? А я смотрю в сообщение-а там же по-русски сказанно:cursor not closed, ну просмотрел процу, нашёл ещё один выход для тривиальной информации, закрыл его, их-же кодом, что характерно, из конца процедуры, пошло. А добавить мне больше нечего, чем богаты, так сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 15:25 |
|
||
|
Cursor not open
|
|||
|---|---|---|---|
|
#18+
moteus, Если я правильно читаю ODBC лог, то я не понимаю как этот код может вообще где-то работать. Между STMT_PREPARE команды с вопросительным знаком внутри и CURSOR_OPEN должен обязательно идти BIND_PARAM. А этого я в логе не вижу... Зато я вижу что CURSOR_OPEN пытается работать с параметром привязаным к случайному месту памяти. KOLCHOZ_POSTEVENTСинтакс какой-то незнакомый. Но так, интуитивно, сделать бы закрылку после end for, а чо, есть не просит.Это синтаксис WatcomSQL и закрывать курсор там действительно не нужно. И даже более того - вредно. Автоматические курсоры внутри FOR циклов закрываются автоматически при покидании его. Подробнее читать в BOL главу: SQL Anywhere Server - SQL Reference » Using SQL » SQL statements » SQL statements (E-O) » FOR statement ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 18:04 |
|
||
|
Cursor not open
|
|||
|---|---|---|---|
|
#18+
White OwlЕсли я правильно читаю ODBC лог, то я не понимаю как этот код может вообще где-то работать. :) Вроде работает правильно. Ну все запросы вполняются по схеме 1) SQLAllocHandle(SQL_HANDLE_STMT, ... 2) SQLBindParameter(stmt, ... 3) SQLExecDirect(stmt, ... 4) SQLBindCol(stmt, ... 5) SQLFetch(stmt) Явно вызывать SQLPrepare и держать кэш подготовленных запросов пока не удается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 19:07 |
|
||
|
Cursor not open
|
|||
|---|---|---|---|
|
#18+
На сколько я понял это и есть передача параметра Код: plaintext Если в процедуру передается несколько параметров то они в логах идут подряд с соответствующими номерами (0..N) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 19:17 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=31&tid=2010752]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 384ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...