设置连接超时是否也会终止服务器端的查询?



我有一些代码查询后端SQL Server:

using (SqlConnection con = new SqlConnection(connString))
{
    SqlDataReader dr;
    SqlCommand cmd;
    cmd = new SqlCommand("PROC1", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandTimeout = 300;
    try 
    {
       con.Open();
       dr = cmd.ExecuteReader();
       while(dr.Read()) 
       {
          // ...
       }
    }
    catch (SqlException e) 
    {
       // Some logging
    }
    catch (Exception e)
    {
       // Some logging
    }
}

一旦超时发生,我预计连接将被关闭,未完成的查询将被杀死。我正面临一个问题,其中tempdb大小一直不变或增加。由于有许多其他进程访问同一台服务器,因此我希望确保不会从我的端引起这种情况。

当查询超时发生时,我可以期望SQL Server清理并正确杀死服务器端上的未完成查询,或者我应该从我这边做更多的事情吗?

当您在服务器上运行任何代码时,客户端保持连接并等待服务器的响应。

超时时间-客户端在关闭连接之前等待服务器响应的最长时间。因此,服务器上的代码一直运行,直到它完成或失败(例如。tempDB溢出错误)。

因此,在默认情况下,事务不能在超时时终止。

相关内容

  • 没有找到相关文章