Что означает код HRESULT 0x8004E031 (CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED)?

 
Предыдущий Следующий
CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED SL_E_SFS_INVALID_FS_VERSION

CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED

Контекст этого HRESULT

Результат CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED читается как Компонент вызвал EnterTransactionScope, но перед возвратом не выполнил соответствующий вызов ExitTransactionScope. Практический разбор начинается на границе COM+ transaction scope, где можно получить воспроизводимые входы и первый нижележащий статус.

Диагностическая выборка

  • запишите transaction ID, isolation level, ambient context и порядок входа/выхода из scope. Для условия «Компонент вызвал EnterTransactionScope, но перед возвратом не выполнил соответствующий вызов ExitTransactionScope» это позволяет восстановить исходный объект и не спутать его с последующим состоянием.
  • сохраните технические маркеры -2147164111, 2147803185, 1, 4, FACILITY_ITF с теми значениями, которые были видны до очистки/rollback; они привязывают «Компонент вызвал EnterTransactionScope, но перед возвратом не выполнил соответствующий вызов ExitTransactionScope» к реальному вызову.
  • сохраните момент первого результата и один исправный запуск, сохранив одинаковыми входные данные; различие должно появиться именно на стадии COM+ transaction scope.

Последовательность проверки

повторите на контрольном случае сопоставить вызов с активной транзакцией и проверить, где именно изменился transaction context. Изменяйте только предпосылку, связанную с «Компонент вызвал EnterTransactionScope, но перед возвратом не выполнил соответствующий вызов ExitTransactionScope», а регистрацию, identity, входной объект и окружение по возможности оставляйте прежними.

не ретраить операцию с побочными эффектами, пока неизвестно, была ли исходная транзакция зафиксирована; для результата «Компонент вызвал EnterTransactionScope, но перед возвратом не выполнил соответствующий вызов ExitTransactionScope» широкая переустановка, очистка каталога или ослабление безопасности не считается доказательством причины.

Для соседних результатов CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED сравнивайте первую различающуюся операцию. Исправление подтверждено только тогда, когда исходная граница проходит при прежних входах и следующий ожидаемый шаг получает корректное состояние.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.