Транзакция ADO.NET не зачисляет команды после открытия и закрытия первого соединения

У меня возникли проблемы с использованием глобальной временной таблицы Oracle на одном из наших серверов. Вот подробности того, что я пытаюсь сделать.

  1. Создайте оракулконнектион.
  2. Начните OracleTransaction с этого соединения.
  3. Создайте OracleCommand, чтобы вставить одно значение в глобальную временную таблицу Oracle (GTT). например вставить в MY_GTT (SOME_FIELD) значения (123);
  4. Зарегистрируйте указанную выше команду в транзакции и ExecuteNonQuery.
  5. Создайте еще одну команду OracleCommand, чтобы считать это значение из Oracle GTT. например выберите SOME_FIELD из MY_GTT;
  6. Зарегистрируйте вышеуказанную команду в транзакции и ExecuteReader.
  7. Зафиксируйте транзакцию.

Этот кейс работает на всех наших серверах, кроме одного. Что еще более странно, так это то, что этот тестовый пример работает на рассматриваемом сервере после перезапуска рабочих процессов, но последующие запросы не работают.

Так что, возможно, сервер неправильно перезапускает соединения или что-то в этом роде...


person Toby Artisan    schedule 03.08.2010    source источник
comment
Я только что проверил это из консольного приложения, и это то же самое поведение. Таким образом, это исключает IIS из списка возможных подозреваемых. Может быть, это конфигурация .NET...   -  person Toby Artisan    schedule 03.08.2010


Ответы (1)


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

Однако, когда я использовал драйвер Oracle ODP.NET, все работало. Драйвер, который не работал, был устаревшим драйвером Microsoft System.Data.OracleClient.

person Toby Artisan    schedule 17.09.2010