Из-за некоторых проблем, с которыми я сталкиваюсь, я экспериментирую с пулами соединений в .NET Framework 4. Используя SQL Profiler, я вижу, что каждый раз, когда соединение выбирается из пула соединений, выполняется хранимая процедура sp_reset_connection.
Чтобы избавиться от этого сброса (мне на самом деле не нужен sp_reset_connection).Я попытался установить для параметра «Сброс подключения» в строке подключения значение false, но это, похоже, не имеет никакого эффекта.Я думаю, что, возможно, я неправильно понимаю назначение параметра сброса соединения.
Я заметил, что параметр сброса соединения не задокументирован в http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx. Но он упоминается во многих других местах.Например, http://www.techrepublic.com/article/educate-yourself-about-net-sql-server-connection-string-syntax/6084879.
Если я установил для флага Conection Reset недопустимое значение (например, «hello»), я получаю исключение при открытии соединения, которое указывает на то, что флаг Reset Connection фактически используется.
Действительно ли ADO.NET заботится о флаге сброса соединения?
Мой код ниже:
static void Main(string[] args)
{
const string connectionString =
"Data Source=(local);Initial Catalog=MyDatabse;User ID=sa;Password=<removed>;Connection Timeout=5;Pooling=true;Min Pool Size=1; Max Pool Size=1; Enlist=false; Connection Reset=false;";
var connections = new List<SqlConnection>();
for (int i = 0; i < 1000000; i++)
{
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand command = new SqlCommand("SELECT * FROM DatabaseVersion", conn);
command.ExecuteNonQuery();
connections.Add(conn);
}
}
}