В частности, это касается служб отчетов SQL Server, однако я также рассматриваю это как типичную проблему приложений .Net.
Вот в чем проблема. Мы используем SSRS для передачи данных из базы данных Oracle. С первого дня наши пользователи жалуются на такие ошибки, как ORA-2396: Превышено максимальное время простоя, ORA-01012-Вы не вошли в систему и т. д.
Мы включили администраторов баз данных, разработчиков приложений, сетевых инженеров, но до сих пор мы не смогли найти лучшего ключа к этому.
Недавно, проводя некоторые исследования, я заметил, что многие люди задокументировали одну «известную» проблему с подключением .Net к оракулу. Как они упоминают, если мы используем пул соединений, есть вероятность, что даже бесполезное соединение может быть доступно в пуле. При следующем запросе это соединение может быть использовано, и в этот момент будет выдана ошибка. Как подтвердил наш администратор базы данных, наш экземпляр оракула настроен на разрыв соединения, если он не используется в течение X минут.
Вот ссылки, в которых есть вышеупомянутое упоминание http://msdn.microsoft.com/en-us/library/8xx3tyca(v=VS.90).aspx
http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx
Есть еще парочка. Однако я нигде не получаю очень подтвержденного заявления о том, что да, это проблема с текущими (последними версиями .Net и oracle и т. д.).
Что касается решения, они упоминают, что мы будем использовать атрибут «Проверить соединение = true» как часть строки подключения. Но если я попытаюсь использовать это, он говорит: «Ключевое слово не поддерживается — проверьте соединение». (Я также пробовал Валидкон)
У меня есть следующие вопросы: 1. Подтверждено ли, что эта проблема с «грязным» чтением из пула соединений существует? 2. Если да, то каковы решения? 3. Если нет, то что может быть причиной проблем с нашей стороны.
Если вам нужна дополнительная информация, не стесняйтесь комментировать.