【问题标题】:How to find out the table involved in deadlock?如何找出涉及死锁的表?
【发布时间】:2017-05-22 00:17:44
【问题描述】:

我正在运行一个基于 Spring、JPA/Hibernate、Tomcat 和 MS SQL Server 的网站。查看系统日志时,我注意到如下几行:

SqlExceptionHelper:146 - Transaction (Process ID 61) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

我知道什么是死锁,但我希望知道死锁涉及到哪个表。我怎样才能得到这些信息?

请注意,我无法在开发环境中看到此错误。我也无法在 MS SQL 服务器中找到此信息。

【问题讨论】:

标签: sql-server spring hibernate


【解决方案1】:

使用 SQL Server Profiler 跟踪“锁/死锁图”事件。 希望您能掌握所有相关内容:对象和查询。

【讨论】:

  • Edgard,我说的对吗?一旦启动跟踪,它就会一直运行,并且与死锁和表名相关的事件将记录在服务器日志中?
  • 它只会记录在“SQL Server Profiler”自己中(或者在跟踪文件中,如果您要求分析器将跟踪记录在文件中)。 SQL Server Profiler 是一个完全独立的工具;他只为自己记录事件。您可以让它运行,也可以将所有内容记录在单独的“.trc”文件中。
  • 我尝试了分析器工具。虽然我只选择了“锁定/死锁图”并将跟踪保存在文件中。分析器似乎记录了所有内容,而不是等待捕获死锁事件,并且 .trc 文件快速增长。如何让它只记录死锁事件?
  • 您必须选中“让服务器处理数据”复选框(就在文件名下方)并将跟踪保存在共享目录中。跟踪不应变得非常大。
  • 非常感谢您的跟进!
猜你喜欢
  • 1970-01-01
  • 2020-11-24
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多