C # SQLCподсоединение к пулу - PullRequest
15 голосов
/ 16 декабря 2010

Может кто-нибудь рассказать мне, как сделать пул соединений в ADO.Net, мне нужно подключиться к 3 отдельным базам данных. 2 из них находятся на одном сервере, а другой - на отдельном.

Лучше с фрагментами кода ..

Ответы [ 3 ]

14 голосов
/ 16 декабря 2010

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

Но всегда гарантируют, что ваши соединения расположены, в идеале с using:

using(var conn = new SqlConnection(connectionString)) {
    // use conn
}

, затем он возвращается в пул (для повторного использования, когда следующая строка подключения отображается) даже при возникновении исключения.

Для отключить пул (если вы выберете), включите Pooling=false; в строку подключения.

8 голосов
/ 16 декабря 2010

Не нужно ничего специально настраивать или устанавливать, просто позвольте этому случиться ... Большинство проблем, которые я видел, вызваны тем, что люди не закрывают соединения или слишком умны

Пулы создаются для соединенияСтрока, чтобы у вас было три в этом случае

5 голосов
/ 16 декабря 2010

Некоторые провайдеры не обеспечивают пул соединений.Насколько мне известно, это включает в себя строки подключения к базам данных Microsoft Access (Jet) и SQL Server CE (компактная версия).

Отсутствие пула подключений для них делает доступ к базе данных значительно медленнее.

Решениедля отсутствующего пула Jet было для меня всегда иметь одно единственное соединение с базой данных Jet, открытое в течение всего времени жизни программы (вопреки рекомендуемой методике).Это значительно ускорило мои SQL-запросы к базе данных Jet Access из приложений .NET, но также работает только с локальными базами данных Jet;для баз данных Jet на общих сетевых ресурсах я получаю относительно быстрые исключения из-за слишком большого количества дескрипторов открытых файлов.

Для SQL Server CE я пока не нашел решения.

...