gpt4 book ai didi

sql - 设置连接超时也会终止服务器端的查询吗?

转载 作者:行者123 更新时间:2023-12-04 04:55:32 24 4
gpt4 key购买 nike

我有一些查询后端 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 溢出错误)。

因此,您不能期望事务默认在超时时终止。

关于sql - 设置连接超时也会终止服务器端的查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16804304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com