| Предыдущий | Следующий |
| hrUpdateNotPrepared | hrTooManySorts |
hrerrDataHasChanged
Что означает hrerrDataHasChanged
hrerrDataHasChanged (0xC800064B) — операция отменена, поскольку данные изменились.
Что проверить
Зафиксируйте базу, таблицу или сессию ESE и первый API Jet/ESENT, который вернул hrerrDataHasChanged.
- Проверьте состояние базы и журналов ESE, свободные ресурсы процесса и состояние активной транзакции именно в момент отказа.
- Если ошибка возникла при восстановлении или работе с журналами, сопоставьте поколения журналов, контрольную точку и выбранный набор файлов; не подменяйте восстановление простым повтором операции.
- Установите, какая операция первой перевела объект в конечное/отменённое состояние до hrerrDataHasChanged. Не продолжайте использовать старый дескриптор/контекст после завершения; новую попытку начинайте только после фиксации исхода предыдущей.
Практический смысл и диагностика
Optimistic cursor/update state больше не соответствует row version, на которой caller строил своё изменение.
Сопоставьте JetBeginSession/transaction boundaries и конкретный update API с row version, прочитанной до изменения.
hrTransTooDeep — другой transaction-state code про nesting depth savepoints; он не означает concurrent row modification.
Перечитайте row, заново проверьте business preconditions и повторяйте update только через idempotent transaction path.
Каждый retry обязан заново читать application preconditions, потому что visible row уже могла измениться; begin должен завершаться commit или rollback на той же session.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
