【问题标题】:MSSQL database lock stopping my application?MSSQL 数据库锁停止我的应用程序?
【发布时间】:2012-05-10 07:14:43
【问题描述】:

我在我的 java 应用程序中遇到问题,一旦我登录,我就可以访问任何不查询名为 content 的表的页面。当我尝试查询此表时,它会坐着等着什么。我检查了 MsSQL 中的活动监视器,它似乎有一个锁。我试图弄清楚这是从哪里来的。我是 MsSQL 的新手,有 MySQL 的背景。

我认为我们的 DAO 中的某些查询可能会导致此问题,因此我将它们更改为使用 JPA,但没有成功。

【问题讨论】:

  • 您想解开表上的锁还是找出问题的根源?
  • 桌上有触发器吗?发布您用于访问表格的代码。
  • @LuiggiMendoza 我希望找到问题的原因
  • @Perception - 不,没有。正在运行的查询由 Java 的 JPA 生成,尽管 Glassfish 日志似乎没有捕获查询日志记录。我所有的其他查询都是......

标签: java sql-server


【解决方案1】:

看起来会话 58 被会话 74 阻止。检查会话 74 是否被另一个会话阻止,依此类推,直到找到根锁。

您可以通过右键单击会话来终止会话,或者执行如下查询:

kill 74

【讨论】:

    【解决方案2】:

    具体问题上面已经解决了,但是更普遍的问题是你的代码没有为查询执行配置jdbc驱动超时。如何做到这一点是非常具体的驱动程序,所以你必须对 sqlserver 进行研究才能弄清楚如何做到这一点。

    通常,只需在管理连接的任何内容上设置一些属性即可。通常这将在底层 javax.sql.DataSource

    【讨论】:

    • 您能解释一下您是如何知道这是超时问题的吗?我担心超时可能对我们的应用程序产生的潜在影响...
    • 根据我们的连接池设置超时设置为300秒
    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多