¿Qué significa el código HRESULT 0x8004D003 (XACT_E_COMMITPREVENTED)?

 
Anterior Siguiente
XACT_E_COMMITFAILED XACT_E_HEURISTICABORT

XACT_E_COMMITPREVENTED

Qué significa XACT_E_COMMITPREVENTED

XACT_E_COMMITPREVENTED corresponde al HRESULT 0x8004D003. Windows lo describe así: «No se puede llamar a commit en este objeto de transacción porque la aplicación que realiza la llamada no inició la transacción.».

Este resultado delimita el problema en resultado final y transición de estado de una transacción coordinada. En particular, el objeto no permite que este caller origine el commit; hay que revisar quién creó/inició la transacción y qué interfaz se está usando.

Qué comprobar

  • Captura UOW/transaction ID, método que devuelve el código, estado anterior, voto de cada participante, timeout y primer error previo en el intento que devuelve 0x8004D003.
  • Conserva la primera respuesta del resource manager y la decisión del coordinator antes de reiniciar servicios; el reinicio puede borrar la evidencia temporal.
  • Comprueba de forma explícita esta condición: el objeto no permite que este caller origine el commit; hay que revisar quién creó/inició la transacción y qué interfaz se está usando.

Tratamiento y recuperación

No repitas commit o abort sobre el mismo objeto a ciegas. Determina primero el resultado ya decidido; si la operación de negocio debe repetirse, inicia una transacción nueva y comprueba antes los efectos externos que MSDTC no puede revertir.

Diferencias con resultados cercanos

Repite el escenario con correlación completa y confirma que la transición que originaba el código ya no aparece; no basta con que el caller deje de mostrar el HRESULT.

Referencias técnicas


¿Buscas un código diferente? Buscar otro código de estado o error.