| Предыдущий | Следующий |
| STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION | STATUS_TRANSACTION_OBJECT_EXPIRED |
STATUS_TRANSACTION_NOT_ROOT
STATUS_TRANSACTION_NOT_ROOT означает, что вызывающая сторона попыталась создать superior enlistment на подчинённой ветви транзакции. KTM разрешает superior-роль только корневой транзакции, поскольку она координирует подготовку и исход всего дерева.
Это отличается от STATUS_TRANSACTION_SUPERIOR_EXISTS. Not-root отклоняет место в дереве, даже если superior там ещё не создавался; superior-exists отклоняет второго координатора после уже существующего разрешённого superior enlistment.
Только корневая транзакция может стать superior
- Проследите отношение родительской и корневой транзакции для дескриптора, использованного в вызове enlistment.
- Создавайте superior enlistment только у предполагаемого корневого координатора, а для участвующих диспетчеров ресурсов используйте subordinate enlistments.
- Зафиксируйте, интегрирует ли вызывающая сторона внешний компонент обработки транзакций, а не предполагает, что любой дескриптор может координировать исходы.
Ссылки
- Microsoft: создание вышестоящего диспетчера транзакций
- Microsoft: уведомления транзакций KTM
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.