Порт отправки BizTalk возвращает ORA-01013: пользователь запросил отмену текущей операции

У меня есть приложение, которое вставляет много строк в базу данных Oracle. Порт отправки возвращает "ORA-01013: пользователь запросил отмену текущей операции"

Порт отправки - "WCF-Custom", использующий OracleDbBinding для подключения к базе данных.

2 ответа

У меня та же проблема в прошлом. Моя проблема заключалась в использовании порта "WCF-Custom" с OracleDBBinding для вызова Oracle PL. Этот PL был очень медленным в своем ответе, и, наконец, я получил ошибку "ORA-01013: пользователь запросил отмену текущей операции".

Моя проблема была решена изменением PL. Я думаю, что ошибка была вызвана свойством "ReceiveTimeout" порта отправки. Это свойство говорит, что "Определяет время ожидания получения сообщения WCF. По сути, это означает максимальное время ожидания адаптером входящего сообщения". Я подозреваю, что, когда ReceiveTimeout завершено, WCF-Custom отменяет операцию, а затем Oracle отправляет Ошибка.

Что происходит:

При вставке большого количества записей WCF делает несколько параллельных запросов на вставку данных. Параметр UseAmbientTransaction по умолчанию охватывает все вставки в рамках одной транзакции. Если одна из вставленных строк нарушает ограничение базы данных, она пытается откатить транзакцию для всех вставок. Все транзакции возвращают исключение Oracle 1013, и реальная причина сбоя теряется.

Решение:

На вкладке "Дополнительные параметры транспорта" для порта отправки установите флажок "Заказанная доставка". Это предотвращает параллельные операции вставки, и реальная причина ошибки будет зарегистрирована.

Другие вопросы по тегам