| Предыдущий | Следующий |
| XACT_E_ALREADYINPROGRESS | XACT_E_LOGFULL |
XACT_E_ABORTED
Abort — окончательный результат транзакции, а не запрос повторить commit
XACT_E_ABORTED означает, что до текущей операции транзакция уже была окончательно прервана. Abort мог быть инициирован приложением, тайм-аутом, голосом диспетчера ресурсов, потерей обязательного участника или односторонним сбоем в активной фазе.
Найдите первое решение об abort и отделите его от последующих симптомов. После выбора abort последующие операции подключения участника, commit или вызовы ресурсов могут возвращать вторичные ошибки. Повтор приложения должен начинать новую транзакцию и заново оценивать бизнес-операцию по текущему состоянию. До повтора подтвердите идемпотентность или компенсацию внешних вызовов, не охваченных MSDTC, поскольку распределённый rollback не может отменить их.
Доказательства abort в порядке приоритета
- Первый компонент, запросивший abort или проголосовавший за него.
- Тайм-аут транзакции и прошедшее время.
- Ошибка участника непосредственно перед abort.
- Внешние побочные эффекты за пределами подключённых диспетчеров ресурсов.
Ссылки
- Microsoft MS-DTCO: односторонний abort и варианты завершения
- Microsoft MS-DTCO: распространение результата abort
- PostgreSQL: rollback подготовленной распределённой работы
Нужно найти другой код? Найти другой код состояния или ошибки.