Что означает код HRESULT 0x8004D002 (XACT_E_COMMITFAILED)?

 
Предыдущий Следующий
XACT_E_CANTRETAIN XACT_E_COMMITPREVENTED

XACT_E_COMMITFAILED

HRESULT сообщает результат, а журналы участников раскрывают причину

XACT_E_COMMITFAILED означает, что MSDTC не смог завершить фиксацию и разрешил транзакцию как отменённую. Внешний код не определяет, какой участник проголосовал против, превысил тайм-аут, потерял устойчивое состояние или завершился сбоем при подготовке, поэтому наиболее полезны связанные сведения по идентификатору транзакции у координатора и каждого подключённого диспетчера ресурсов.

Не повторяйте бизнес-операцию, пока не понятны её идемпотентность и внешние побочные эффекты. Сначала установите, началась ли первая фаза, какие участники достигли Prepared и выполнялось ли нетранзакционное действие вне распределённой единицы работы. Результат транзакции — отмена, но повтор уровня приложения всё равно может продублировать работу систем, не участвовавших в транзакции.

Временная шкала сбоя фиксации

  • Идентификатор распределённой транзакции или единицы работы.
  • Голос подготовки и время каждого устойчивого участника.
  • Трассировка или событие MSDTC с первым решением об отмене.
  • Нетранзакционные вызовы, выполненные до запроса фиксации.

Ссылки


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