Большое количество открытых подключений к базе данных приводит к сбою приложения - PullRequest
1 голос
/ 09 марта 2011

В моем веб-сервисе я подключаюсь к базе данных Sybase.

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

Для каждого доктора открывается новое соединение с базой данных. Для каждого Доктора в списке я сначала получаю список больниц в DbReader, и я выполняю операции в каждой больнице в считывателе.Как только все записи в DbReader обработаны, я закрываю ридер вместе с подключением.(Это потому, что я передаю System.Data.CommandBehavior.CloseConnection методу ExecuteReader() класса Sybase.Data.AseClient.AseCommand)

Теперь, если количество докторов превышает какой-либо предел, я получаю ошибки, так какоткрытые становятся очень большими.

Какой другой подход я могу использовать в этом сценарии, чтобы избавиться от ошибки?Как узнать количество открытых соединений со стороны клиента?

Одно из того, что я могу сделать, - не открывать новое соединение, пока не будет закрыто предыдущее соединение.Но этот подход не так хорош (я думаю), потому что, хотя разрешено несколько соединений, у меня будет по одному соединению за раз.

1 Ответ

3 голосов
/ 09 марта 2011

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

Кроме того, вы уверены, что в этом случае вам нужно многоканальное соединение?Похоже, вы должны запустить один и тот же процесс для каждого Доктора.Таким образом, вы можете сделать это в цикле, думаю, для этого достаточно одного соединения.

...