| Anterior | Siguiente |
| FSRM_E_MODULE_TIMEOUT | XACT_E_CANTRETAIN |
XACT_E_ALREADYOTHERSINGLEPHASE
Qué significa XACT_E_ALREADYOTHERSINGLEPHASE
XACT_E_ALREADYOTHERSINGLEPHASE corresponde al HRESULT 0x8004D000. Windows lo describe así: «Ya se ha inscrito otro administrador de recursos de fase única en esta transacción.».
Para diagnosticarla conviene pensar en inscripción de resource managers y correspondencia entre UOW, enlistment y recurso, no solo en el método que terminó devolviendo el código. En este caso, ya hay otro resource manager ocupando el papel de optimización single-phase; no pueden competir dos participantes por esa función.
Qué comprobar
- Captura UOW, RMID, identificador de enlistment, resource manager, flags de single-phase y la llamada exacta de enlist/re-enlist en el intento que devuelve
0x8004D000. - Correlaciona eventos de aplicación, MSDTC y resource manager con la misma UOW para no mezclar transacciones concurrentes del mismo proceso.
- Comprueba de forma explícita esta condición: ya hay otro resource manager ocupando el papel de optimización single-phase; no pueden competir dos participantes por esa función.
Tratamiento y recuperación
Corrige la relación entre la transacción y el resource manager que participa en ella. Reutiliza solo el enlistment y el UOW que pertenecen a esa generación; al reintentar, crea una inscripción nueva si la anterior ya quedó resuelta o invalidada.
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.
