Я столкнулся с проблемой, когда соединение с нашим SQL Server не закрыто должным образом. Я могу наблюдать за открытыми соединениями (спящими), используя sp_who2 или sp_who. Я делаю некоторые веб-звонки на сервер и вижу, как увеличивается количество подключений. При определенном количестве соединений я сталкиваюсь с Таймаутом. Веб-сайт, который я вызываю, имеет только следующий код (обфусцированный), который открывает соединение с SQL Server:
private string getsomedetails(string Name, string applicationConnectionString)
{
string empty = string.Empty;
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = new SqlConnection(applicationConnectionString);
sqlCommand.CommandText = "SELECT xx FROM dbo.xxx WHERE Name = @xyz";
sqlCommand.Parameters.AddWithValue("@xyz", (object) Name);
sqlCommand.Connection.Open();
return sqlCommand.ExecuteScalar().ToString();
}
Я понял, что соединение закрывается, когда оно находится в блоке, как описано выше. Но что происходит за исключением?
Моя строка подключения выглядит следующим образом:
<connectionStrings>
<add name="AssetConnectionString"
providerName="System.Data.SqlClient"
connectionString= "server=SERVERNAME;
database=DBNAME;
uid=USERNAME;
pwd=PASSWORD;
application name=APPNAME"
/>
Мой обходной путь - перезапустить пул приложений в IIS. После этого API будет реагировать как обычно.
Некоторые сведения: Microsoft SQL Server 2014 (SP3-CU4) (KB4500181) IIS версии 6.2
Я предполагаю, что в коде есть утечка, любаяза помощь проголосовали!