| Предыдущий | Следующий |
| XACT_E_TIP_PULL_FAILED | XACT_E_TIP_DISABLED |
XACT_E_DEST_TMNOTAVAILABLE
Диагностический смысл
XACT_E_DEST_TMNOTAVAILABLE (0x8004D022) — код ошибки из области MSDTC / COM+ transactions. Короткий ориентир по имени: целевой / transaction manager недоступен. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: The destination computer’s transaction manager is unavailable.
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Объект и состояние
Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.
Для этого кода особенно полезно различать два признака из исходной документации: The destination computer’s transaction manager is unavailable.
и MSDTC is stopped, starting, recovering, or disabled on the destination host.
. Они задают более узкую границу, чем название facility.
Сведения для воспроизведения
- идентификатор UOW и первый API, вернувший код
- фаза prepare/commit/abort/recovery и текущий владелец перехода
- голоса и состояние resource managers, включая первый отказ
- тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
- Сопоставьте trace с исходным признаком:
The destination service is reachable but network DTC access or inbound participation is disabled.
- Сопоставьте trace с исходным признаком:
Validate bidirectional name resolution and RPC/DTC port reachability.
- Сопоставьте trace с исходным признаком:
Run Test-Dtc between the actual participating computers and retain each subtest result.
Последовательность действий
- Проверьте именно границу «целевой / transaction manager недоступен» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
The destination application or database can be reachable while its transaction manager is stopped, unhealthy, unregistered, or inaccessible under DTC policy. Ordinary connectivity tests therefore do not prove that the coordinator path works.
.
Что считать исправлением
Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.
Регрессионная проверка должна отдельно контролировать условие RPC endpoint mapping or the configured DTC port is unavailable from the source coordinator.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft: COM transaction error codes
- Microsoft: Test-Dtc
- Microsoft: configure DTC through firewalls
- Microsoft: MSDTC security and network access
- Microsoft: HRESULT values in MS-ERREF
Нужно найти другой код? Найти другой код состояния или ошибки.
