Что означает код HRESULT 0x8004D003 (XACT_E_COMMITPREVENTED)?

 
Предыдущий Следующий
XACT_E_COMMITFAILED XACT_E_HEURISTICABORT

XACT_E_COMMITPREVENTED

Распространение транзакции не передаёт полномочие фиксации автоматически

XACT_E_COMMITPREVENTED означает, что код, вызвавший фиксацию, не создавал транзакцию либо получил представление транзакции, которому запрещено определять её результат. Контексты распределённых транзакций могут маршалироваться рабочим процессам и удалённым службам, чтобы они присоединяли ресурсы, но корневое приложение остаётся ответственным за границы транзакции, если модель API явно не делегировала полномочия.

Проследите, где транзакция была создана и как текущий компонент получил интерфейс или cookie. Библиотека обычно должна вернуть своему вызывающему коду успех или ошибку и позволить владельцу транзакции выполнить commit либо abort. Создание дополнительной локальной транзакции не является равнозначным исправлением, поскольку разделяет работу ресурсов на другую атомарную единицу.

Какие сведения о владении собрать

  • Процесс и место вызова, начавшие корневую транзакцию.
  • Путь маршалирования или распространения, использованный текущим компонентом.
  • Тип интерфейса или оболочки, предоставленный попытке фиксации.
  • Ожидаемый владелец окончательного решения о фиксации или отмене.

Ссылки


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