Что означает код HRESULT 0xC8000647 (hrAlreadyPrepared)?

 
Предыдущий Следующий
hrKeyDuplicate hrKeyNotMade

hrAlreadyPrepared

Что означает hrAlreadyPrepared

hrAlreadyPrepared (0xC8000647) — текущая запись уже скопирована или очищена.

Это старый HRESULT-вариант результата ESE (Extensible Storage Engine, ESENT); в JET API соответствующее условие известно как JET_errAlreadyPrepared.

Что проверить

  • Сохраните позицию курсора перед вызовом: текущую запись, индекс, bookmark и уровень транзакции. После move/update/delete эта позиция может стать недействительной.
  • Bookmark и сохранённые идентификаторы должны относиться к той же таблице и контексту, где были получены; отсутствие текущей записи обрабатывайте отдельно от отсутствия объекта.

Практический смысл и диагностика

  • ESE cursor уже находится в prepared update/copy state и получил ещё один несовместимый prepare request.
  • `hrUpdateNotPrepared` — обратная lifecycle ошибка, когда prepare state отсутствует; здесь предыдущий prepare всё ещё активен.
  • `hrRecordNotFound` относится к lookup/seek miss и не объясняет duplicate prepare lifecycle.
  • Проверьте balance `JetPrepareUpdate` с `JetUpdate`/cancel и navigation calls; не переносите prepared state через unrelated cursor operation.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.