У меня есть клиент-серверное приложение, где на стороне сервера находится служба Azure WCF с данными в базе данных SQL Azure.Клиентами являются приложения Windows Phone 7 silverlight.Клиент и сервер связываются через WCF.Сервер предоставляет клиенту данные, которые хранятся в базе данных SQL Azure.
Недавно я столкнулся с некоторыми проблемами с пулами.Я создавал новый объект каждый раз, когда поступал запрос клиента.Я не закрывал эти соединения и очень скоро обнаружил исключение:
Истекло время ожидания.Время ожидания истекло до получения соединения из пула.Это могло произойти из-за того, что все пул подключений использовались и был достигнут максимальный размер пула.
Мой вопрос - как обрабатывать объект подключения к БД?Должен ли я создать один объект подключения для каждого запроса клиента или я должен создать одноэлементный объект, который должен обрабатывать все обращения к БД?Возможно ли это вообще - не истекает ли время ожидания соединения объекта или что-то в этом роде?
Я использую объект SQLConnection:
private static SqlConnection connection
{
get
{
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder
{
DataSource = DB_SOURCE,
InitialCatalog = DB_NAME,
Encrypt = false,
TrustServerCertificate = false,
UserID = DB_USER,
Password = DB_PASS,
};
SqlConnection c = new SqlConnection(connectionStringBuilder.ToString());
c.Open();
return c;
}
}
public static void execute(String query)
{
try
{
SqlCommand com = new SqlCommand(query, connection);
com.ExecuteNonQuery();
}
finally
{
connection.Close();
}
}