Проблемы прямого режима поставщика Devart Oracle с параметризованными запросами

У меня возникают странные проблемы с параметризованными запросами в прямом режиме.

В основном, если я выполняю вставку в таблицу, которая уже содержит уникальную строку, я получаю ожидаемое исключение вставки. После исключения вставки я использую это же соединение, чтобы получить информацию, для которой данные уже заблокированы, чтобы сообщить о пользователе (я знаю, что на данный момент соединение все еще работает). Затем это соединение закрывается и возвращается в пул, до этого момента все в порядке, как и ожидалось.

Позже, когда это соединение перехватывается из пула, я пытаюсь выполнить простой параметризованный запрос на обновление и получаю следующее исключение: ORA-01008: не все переменные привязаны. Это имело бы смысл, если бы все переменные не были привязаны, однако, глядя на коллекцию OracleParameter, я ясно вижу, что все параметры существуют и что их значения верны. Не говоря уже о том, что этот запрос запускается несколько раз, прежде чем это соединение будет извлечено из пула для других соединений в пуле, поскольку это общая таблица обновлений, которая обновляется для каждого запроса клиента. Кроме того, весь этот код отлично работает с отключенным прямым режимом с помощью клиента оракула (тот же код и выполнение запроса, что и в прямом режиме).

В основном кажется, что по какой-то причине в прямом режиме, когда вставка выполняется и терпит неудачу, а соединение закрывается и помещается обратно в пул, соединение становится поврежденным и терпит неудачу при повторном использовании с параметризованными запросами.

Я бы создал простой образец, но единственная проблема заключается в том, что эта проблема не может быть надежно воспроизведена в простом случае.

Информация:

  • Это клиент-серверное приложение. Проблема возникает даже с одним клиентом.
  • Соединение создается и захватывается из пула для каждого клиентского запроса и закрывается после выполнения запроса.
  • Каждое соединение используется в одном потоке (не в нескольких потоках)
  • Используя последнюю версию Devart.Data.Oracle 5.35.54 и Devart.Data 5.0.16, я также пробовал использовать предыдущую версию с теми же результатами.

Если кто-то сталкивался с этим или имеет какие-либо идеи, ваша помощь будет принята с благодарностью.

Благодарность


person lhla    schedule 08.12.2009    source источник


Ответы (1)


Мы ответили вам здесь на нашем форуме.

person Devart    schedule 09.12.2009