如果客户端连接在持有锁时被终止会发生什么?

Gil*_*ili 8 sql-server transaction

如果客户端建立事务,锁定行或表,并且客户端进程在有机会回滚或提交事务之前崩溃,会发生什么情况?SQL Server 对事务做了什么(如果有的话)?

  1. SQL Server 是否有心跳机制来检测套接字是否被杀死?
  2. 在检测到套接字被杀死时,SQL Server 会自动回滚事务吗?或者行/表锁是否持续存在(导致其他客户端死锁)?

请提供权威来源以支持您的答案。

更新:客户端进程崩溃。我不是在谈论调用KILL命令的人。

小智 11

会话以及附加的 spid 将被终止/回滚。

/sf/ask/278475921/

https://technet.microsoft.com/en-us/library/ms173730%28v=sql.110%29.aspx

编辑:

  1. 我会检查您的日志以进行验证,但本质上,套接字将被强行关闭。

从我所见,这不是数据库问题……但是您是否有可以发布的错误消息来澄清?

另请参阅事务处理期间的错误

如果错误阻止了事务的成功完成,SQL Server 会自动回滚事务并释放事务持有的所有资源。如果客户端与数据库引擎实例的网络连接中断,则当网络通知实例中断时,该连接的所有未完成事务都会回滚。如果客户端应用程序失败或者客户端计算机出现故障或重新启动,这也会中断连接,并且数据库引擎实例会在网络通知中断时回滚所有未完成的连接。如果客户端注销应用程序,则回滚任何未完成的事务