SQL Server 连接正在建立且未通过 ADO.NET / C# 释放

问题描述 投票:0回答:1

我正在使用此处显示的代码连接到 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
c# asp.net sql-server asp.net-core ado.net
1个回答
0
投票

避免使用 DataSet,我建议使用实体框架和/或一些 ORM 进行连接,例如 NPoco。

© www.soinside.com 2019 - 2024. All rights reserved.