| Предыдущий | Следующий |
| ERROR_TRANSACTION_NOT_REQUESTED | ERROR_TRANSACTION_ALREADY_COMMITTED |
ERROR_TRANSACTION_ALREADY_ABORTED
Этот результат указывает на уже отменённую транзакцию KTM. Запрошенный вызов поступил слишком поздно, чтобы изменить или продолжить эту единицу работы. Важный диагностический вопрос — не как принудительно выполнить вызов, а какой участник, тайм-аут, сбой или явный откат первым вызвал отмену.
Не путайте его с
ERROR_TRANSACTION_NOT_ACTIVE, который сообщает о повторном использовании транзакции за пределами её активного жизненного цикла, не называя конечный результат.ERROR_TRANSACTION_ALREADY_COMMITTED, который имеет такой же шаблон позднего вызова, но успешный окончательный результат.- Ошибка конкретного диспетчера ресурсов: он может сообщить собственный сбой до того, как KTM зарегистрирует транзакцию как отменённую.
Последовательность исследования
Запишите идентификатор транзакции и сопоставьте все участвующие процессы и диспетчеры ресурсов. Найдите первый сбойный обработчик подготовки, фиксации, отката или уведомления, а не более поздний API, получивший этот код. Очистите состояние приложения по пути отмены, закройте устаревшие дескрипторы и создавайте новую транзакцию только тогда, когда повтор безопасен на уровне приложения.
См. Транзакции KTM, API фиксации и откатаи Определения WinError.
Нужно найти другой код? Найти другой код состояния или ошибки.