我有一些查询后端 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 清理并正确终止服务器端的未完成查询,还是我应该从我这边做更多的事情?