Позднее открывайте соединения и закрывайте их раньше.
Например:
string result;
using (var con = new SqlConnection(...))
{
con.Open();
var com = con.CreateCommand();
com.CommandText = "select 'hello world'";
result = com.ExecuteScalar();
}
Операционная система Windows обеспечит эффективный пул и повторное использование соединений.А поскольку вы используете соединения только тогда, когда они вам нужны, не существует никаких незанятых соединений.
РЕДАКТИРОВАТЬ: Windows кэширует только те строки соединения, которые буквально одинаковы, поэтому, если вы используете Initial Catalog=<dbname>
в соединениистрока, которая может снизить производительность, если потребуется более 500 «пулов соединений» для одного сервера.
Так что, если у вас 4 сервера с большим количеством баз данных, убедитесь, что вы используете только 4 строки подключения.После подключения переключите базу данных с помощью:
com.CommandText = "use <dbname>";
com.ExecuteNonQuery();
или запросите имя, состоящее из трех частей, например:
select * from <dbname>.dbo.YourTable