| Предыдущий | Следующий |
| XACT_E_ABORTING | XACT_E_PULL_COMM_FAILURE |
XACT_E_PUSH_COMM_FAILURE
Что означает этот результат
XACT_E_PUSH_COMM_FAILURE (0x8004D02A) — код ошибки из области MSDTC / COM+ transactions. Короткий ориентир по имени: push / связь / сбой. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: MSDTC could not push the transaction to the destination coordinator.
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Граница контракта
Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.
Для этого кода особенно полезно различать два признака из исходной документации: MSDTC could not push the transaction to the destination coordinator.
и RPC endpoint mapper or the DTC service port is blocked on the outbound-to-inbound path.
. Они задают более узкую границу, чем название facility.
Данные для диагностики
- идентификатор UOW и первый API, вернувший код
- фаза prepare/commit/abort/recovery и текущий владелец перехода
- голоса и состояние resource managers, включая первый отказ
- тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
- Сопоставьте trace с исходным признаком:
Check endpoint mapper and configured DTC port rules through every firewall between the machines.
- Сопоставьте trace с исходным признаком:
XACT_E_PULL_COMM_FAILURE is the reverse propagation direction. XACT_E_DEST_TMNOTAVAILABLE names destination coordinator availability without specifically identifying the push communication stage.
- Сопоставьте trace с исходным признаком:
Log the first remote resource whose enlistment caused promotion and push.
Порядок проверки
- Проверьте именно границу «push / связь / сбой» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
Authentication policy, duplicate machine identity, or trust configuration prevents the coordinators from establishing the channel.
.
Исправление и контроль
Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.
Регрессионная проверка должна отдельно контролировать условие Include propagation direction in alerts. Pair DTC diagnostics with the exact resource enlistment that triggered promotion so operators do not troubleshoot every database connection indiscriminately.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft: COM transaction error codes
- Microsoft: Test-Dtc
- Microsoft: configure DTC through firewalls
- Microsoft: troubleshooting MSDTC connectivity
- Microsoft: HRESULT values in MS-ERREF
Нужно найти другой код? Найти другой код состояния или ошибки.
