| Anterior | Siguiente |
| XACT_E_CANTRETAIN | XACT_E_COMMITPREVENTED |
XACT_E_COMMITFAILED
Qué significa XACT_E_COMMITFAILED
XACT_E_COMMITFAILED corresponde al HRESULT 0x8004D002. Windows lo describe así: «La transacción no se pudo confirmar por un motivo desconocido. Se anuló la transacción.».
Para diagnosticarla conviene pensar en resultado final y transición de estado de una transacción coordinada, no solo en el método que terminó devolviendo el código. En este caso, el commit no alcanzó un resultado confirmable y el transaction manager terminó la operación con abort.
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
0x8004D002. - Localiza el primer participante o coordinador que cambia el estado; los HRESULT posteriores pueden ser solo propagación del outcome ya elegido.
- Comprueba de forma explícita esta condición: el commit no alcanzó un resultado confirmable y el transaction manager terminó la operación con abort.
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
Después del cambio, confirma que coordinator y resource managers coinciden en la misma decisión y que no quedan ramas prepared/in-doubt pendientes de recovery.
Referencias técnicas
¿Buscas un código diferente? Buscar otro código de estado o error.