You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

应用与SQL Server连接中断后,查询能否继续执行?

SQL Server连接中断后查询执行状态说明

已发起查询的运行逻辑

当.NET应用与SQL Server的连接因应用服务器崩溃等意外中断时,已经在SQL Server上启动的查询不会立即终止。SQL Server不会主动实时检测客户端连接状态,只有当它尝试向客户端返回执行结果、需要接收客户端输入,或是完成查询后尝试释放连接资源时,才会发现连接已断开,此时才会终止相关查询进程。

举个实际场景:假设你提交了一个耗时10分钟的全表统计查询,应用服务器在查询执行到第3分钟时崩溃,SQL Server会继续完成这个查询的执行,直到它尝试把统计结果发送给客户端,才会察觉到连接失效,随后清理该查询的相关资源。

非事务性多语句脚本的执行结果

对于非事务性的多语句脚本,执行规则如下:

  • 脚本中已经执行完成的语句,其对数据库的修改会永久生效(因为没有事务包裹,不会触发回滚);
  • 脚本中正在执行的语句会继续执行完毕,直到SQL Server尝试与客户端交互时发现连接断开;
  • 尚未开始执行的后续语句会直接终止,不会被执行。

举个示例:

-- 非事务性脚本
UPDATE Users SET LastLogin = GETDATE() WHERE ID = 100;
INSERT INTO Logs (Action, UserID) VALUES ('Login', 100);

如果第一条UPDATE语句已经执行完成,此时连接突然中断,那么Users表的修改会被保留,第二条INSERT语句则不会被执行。


内容的提问来源于stack exchange,提问作者SQL_Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:17:35