Обработка разрывов соединения с БД - PullRequest
0 голосов
/ 04 октября 2011

Мой сервис WCF поддерживает соединения с БД для дальнейшей отправки SQL через них. Иногда связь обрывается по разным причинам. Раньше был специальный таймер, который проверяет соединения каждые 1 минуту. Но это не очень хорошее решение проблемы. Не могли бы вы посоветовать мне какой-нибудь способ поддерживать правильную работу соединений или хотя бы как можно скорее восстановить соединение, чтобы обеспечить стабильную работу пользователей. Спасибо!

EDIT: Сервер базы данных - Oracle. Я подключаюсь к серверу базы данных, используя devart dotConnect для Oracle.

1 Ответ

4 голосов
/ 04 октября 2011

Вам не нужно «сохранять» соединения с базой данных. Оставьте повторное использование и кэширование соединений с базой данных .NET Framework.

Просто используйте этот вид кода и избавьтесь от соединения, как только вы закончите его использовать:

using(var connection = new SqlConnection(...))
{
  //Your Code here
}

Нет проблем при выполнении кода выше для каждого вызова базы данных. Информация о соединении кэшируется, и второе «новое» соединение с базой данных очень быстрое.

Чтобы узнать больше о "ConnectionPooling", вы можете прочитать это MSDN Articel .

Edit:

Если вы используете пул, соединение не очень близко, но возвращается в пул. Начальное «рукопожатие» между клиентом и базой данных выполняется только один раз для каждого соединения в пуле.

Используемый вами компонент также поддерживает пул соединений:

READ1 Чтение 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...