我正在使用此处显示的代码连接到 SQL Server。这工作正常,但在过去的 2 天里,我遇到了一个问题,多个连接(~2000)被打开但没有被处理。因此,CPU 利用率达到 100%,系统无法处理任何请求。
如果我做错了什么或有什么方法可以解决这个问题,请帮助和建议。
DataTable dataTable = new DataTable();
try
{
DataSet dataSet = new DataSet();
using (var command = _dbContext.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "usp_get_userdetails";
command.CommandType = CommandType.StoredProcedure;
if (_dbContext.Database.GetDbConnection().State == ConnectionState.Closed)
{
_dbContext.Database.GetDbConnection().Open();
}
command.Parameters.Add(new SqlParameter("@UserId", userid));
var dataAdapter = new SqlDataAdapter { SelectCommand = (SqlCommand)command };
dataAdapter.Fill(dataSet);
dataTable = dataSet.Tables[0];
}
}
catch (Exception ex)
{
throw ex;
}
return dataTable;
我的连接字符串如下所示:
server=*******;uid=username;pwd=********;database= DBName;connection timeout=0;
Max Pool Size = 1000;Pooling = True;TrustServerCertificate=True; MultipleActiveResultSets=True
避免使用 DataSet,我建议使用实体框架和/或一些 ORM 进行连接,例如 NPoco。