| Предыдущий | Следующий |
| ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED | ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED |
ERROR_TRANSACTION_RECORD_TOO_LONG
Эта ошибка означает, что KTM не может записать требуемую запись для предлагаемой операции. Документированные причины — слишком много зачислений в одной транзакции либо слишком большой совокупный размер сведений восстановления. Это ограничение записи журнала транзакций, а не просто нехватка свободного места на диске.
Откуда берётся размер
KTM позволяет диспетчеру ресурсов сохранять непрозрачные сведения восстановления от имени зачисления. После сбоя диспетчер ресурсов может получить эти сведения и восстановить своё состояние. Большие блоки восстановления и большое число участников увеличивают запись, которую KTM должен сохранить в журнале.
Что измерить
- Подсчитайте зачисления диспетчеров ресурсов для транзакции.
- Измерьте размеры сведений восстановления до вызова API KTM, записывающего их.
- Поищите архитектуру приложения, которая помещает неограниченные бизнес-данные в сведения восстановления вместо компактной ссылки для восстановления.
- Разделяйте независимую работу на отдельные транзакции только тогда, когда это допускают требования атомарности.
См. SetEnlistmentRecoveryInformation, функции восстановления KTMи Определение WinError.
Нужно найти другой код? Найти другой код состояния или ошибки.
