| Предыдущий | Следующий |
| hrVersionStoreOutOfMemory | hrOutOfSessions |
hrCurrencyStackOutOfMemory
Что означает hrCurrencyStackOutOfMemory
hrCurrencyStackOutOfMemory (0xC800042E) — не осталось курсоров.
Это старый HRESULT-вариант результата ESE (Extensible Storage Engine, ESENT); в JET API соответствующее условие известно как JET_errCurrencyStackOutOfMemory.
Что проверить
- Сохраните позицию курсора перед вызовом: текущую запись, индекс, bookmark и уровень транзакции. После move/update/delete эта позиция может стать недействительной.
- Bookmark и сохранённые идентификаторы должны относиться к той же таблице и контексту, где были получены; отсутствие текущей записи обрабатывайте отдельно от отсутствия объекта.
Практический смысл и диагностика
- ESE исчерпал внутренний ресурс, используемый для сохранения cursor currency/navigation state.
- Это не то же самое, что exhaustion количества cursor objects: проблема относится к stack/state, который поддерживает вложенные позиции cursor.
- Temporary sort exhaustion имеет другой ресурсный предел; не увеличивайте все ESE limits одновременно, не установив какой именно pool исчерпан.
- Упростите вложенную navigation, ограничьте recursion/bookmark nesting и закрывайте duplicated cursors в том scope, который их создал; зафиксируйте depth и последовательность операций перед первым отказом.
Технические ссылки
- JET_param enumeration
- Transactions and save points
- ESE files and storage paths
- ESE source repository
- Microsoft: JET_ERR enumeration
Нужно найти другой код? Найти другой код состояния или ошибки.