Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Toby ArtisanОтветов: 1

У меня возникли проблемы с использованием глобальной временной таблицы 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. Зафиксируйте транзакцию.

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

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

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

transactions

Ответы

Ответ 1 · Toby Artisan

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы