С# 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 я пока не нашел решения.