首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果客户端连接在持有锁时被终止,会发生什么情况?

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

Database Administration用户
提问于 2015-06-23 18:35:31
回答 2查看 5.8K关注 0票数 9

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

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

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

更新:客户端进程正在崩溃。我指的不是调用杀生命令的人。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2015-06-23 18:38:29

会话以及附加的spid将被杀死/回滚。

https://stackoverflow.com/questions/3978227/how-to-kill-or-rollback-active-transaction

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

编辑:

  1. 我会检查您的日志以验证,但实际上,套接字将强制关闭。

这不是一个数据库问题,从我可以see...but,您有一个错误消息,您可以张贴澄清?

还请参见事务处理过程中的错误

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

票数 12
EN

Database Administration用户

发布于 2015-06-23 19:06:44

您可以这样测试:

  • 打开SSMS,连接到服务器/数据库,打开新查询
  • 开始转换,插入到可选择的select
  • 打开新的SSMS窗口,并运行select * from -它应该被阻止。
  • 打开任务管理器并杀死第一个SSMS进程
  • 在新的SSMS窗口中检查select的结果,该表是否包含somevalue (它不会,因为事务已回滚)

尽管如此,我已经看到了SSRS报告中用户关闭浏览器的情况,但是select查询在数据源上运行了几个小时。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/104920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档