首页 > 解决方案 > 死锁是否会导致任何活动连接超时/中断?

问题描述

我有一个基本的 SQL 问题,如果有两个活动连接,“A”和“B”到 SQL 服务器,假设两者之间发生死锁,所以为了避免死锁,SQL 服务器将回滚其中一个事务,连接“A”或“B”。假设 SQL 服务器回滚连接“A”的事务,这种事务回滚是否也会导致连接 A 的连接超时/连接中断?——</p>

标签: sqldeadlockconnection-timeout

解决方案


这些都不会发生。当一个连接被选为死锁牺牲品时,所发生的只是事务将自动回滚,除此之外别无其他。连接仍将处于活动状态(如果需要,可以立即再次使用),但任何先前关于被终止事务的指令都将丢失,必须重做。

超时是一种完全不同的事件,它始终由客户端控制,并在客户端“放弃”等待响应时发生。但是死锁是在服务器端生成的,会导致连接出错,否则连接仍然存在,就像许多其他错误一样。


推荐阅读