С# SQLConnection пула
Кто-нибудь может сообщить мне, как сделать пул соединений в ADO.Net, мне нужно подключиться к 3 отдельным базам данных. 2 из них находятся на одном сервере, а другой - в отдельном.
Лучше со списком кода.
Ответы
Ответ 1
пока вы строго придерживаетесь порядка размещения своих соединений, по умолчанию (по крайней мере для sql-сервера) заключается в том, что он будет работать автоматически. В вашем примере у вас может быть только 3 базовых соединения (по одному на строку подключения).
Но всегда убедитесь, что ваши соединения расположены, в идеале с using
:
using(var conn = new SqlConnection(connectionString)) {
// use conn
}
то он возвращается обратно в пул (для повторного использования, когда одна и та же строка соединения видна далее), даже когда генерируется исключение.
Чтобы отключить объединение (если вы выберете), включите Pooling=false;
в строку соединения.
Ответ 2
Не нужно ничего настраивать или устанавливать что-то особенное, просто позвольте этому случиться... Большинство проблем, которые я видел, вызваны тем, что люди не закрывают соединения или слишком умны
Пулы создаются для каждой строки подключения, поэтому в этом случае у вас будет три
Ответ 3
Некоторые поставщики не обеспечивают объединение пулов. Насколько мне известно, это включает строки подключения к базам данных Microsoft Access (Jet) и SQL Server CE (компактное издание).
Отсутствие пула соединений для тех, кто делает доступ к базе данных значительно медленнее.
Решение отсутствующего пула Jet было для меня всегда иметь одно единственное подключение к базе данных Jet, открытое для всего жизненного цикла программы (вопреки тому, что рекомендуется для этого метода). Это значительно ускорило SQL-запросы к базе данных Jet Access из приложений .NET, но также работает только с локальными базами данных Jet; для баз данных Jet в сетевых ресурсах я получаю относительно быстрые исключения из-за слишком большого количества открытых файлов.
Для SQL Server CE я пока не нашел решения.