| Anterior | Siguiente |
| XACT_E_NOENLIST | XACT_E_NORESOURCE |
XACT_E_NOISORETAIN
Qué significa XACT_E_NOISORETAIN
XACT_E_NOISORETAIN corresponde al HRESULT 0x8004D00B. Windows lo describe así: «Esta implementación de transacciones no admite la semántica solicitada de retención del aislamiento entre límites de confirmación y anulación con retención, o isoFlags no era cero.».
No debe reducirse a una “falla de MSDTC” genérica: pertenece a opciones de la transacción: aislamiento, retención, asincronía y límites soportados. La pista decisiva es que la combinación de aislamiento y retaining semantics solicitada no puede mantenerse entre límites transaccionales.
Qué comprobar
- Captura nivel de aislamiento, isoFlags, retaining flags, timeout, modo síncrono/asíncrono y capacidades anunciadas por el transaction manager en el intento que devuelve
0x8004D00B. - 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: la combinación de aislamiento y retaining semantics solicitada no puede mantenerse entre límites transaccionales.
Tratamiento y recuperación
Ajusta la llamada a las capacidades reales del transaction manager y del recurso. No ocultes un flag no soportado sustituyéndolo silenciosamente: registra la semántica elegida y valida que aislamiento, timeout y retaining cumplen el contrato de la aplicación.
Diferencias con resultados cercanos
Valida la corrección con una UOW nueva cuando el outcome anterior ya era terminal; el éxito de una llamada posterior sobre otro objeto no cambia el resultado histórico de la transacción fallida.
Referencias técnicas
¿Buscas un código diferente? Buscar otro código de estado o error.
