Java MS SQL Server休眠事务锁

Java MS SQL Server休眠事务锁,java,sql-server,transactions,deadlock,rollback,Java,Sql Server,Transactions,Deadlock,Rollback,我在MS SQL Server 2008上有一个睡眠事务锁问题 有时它不是真正的休眠,或者当事务未完成并且存在真正的锁时。但这不是我的情况 我们有tomcat6和javaapp。当我用java进行任何更新,然后我试图选择更新的记录时——没有运气 如果我与(nolock)一起使用,它会有帮助,我会看到正确的更改行,但是在一段时间后,这个更新会回滚。 如果我通过Studio进行更新,那么它运行良好,立即产生效果 在我申请的许多地方都有类似的情况。 例如,我每天晚上的工作就是将大块数据重新计算到位字段

我在MS SQL Server 2008上有一个睡眠事务锁问题

有时它不是真正的休眠,或者当事务未完成并且存在真正的锁时。但这不是我的情况

我们有tomcat6javaapp。当我用java进行任何更新,然后我试图选择更新的记录时——没有运气

如果我与(nolock)一起使用,它会有帮助,我会看到正确的更改行,但是在一段时间后,这个更新会回滚。 如果我通过
Studio
进行更新,那么它运行良好,立即产生效果

在我申请的许多地方都有类似的情况。 例如,我每天晚上的工作就是将大块数据重新计算到位字段中。最后,它删除旧的位字段,并在内部复制新的位字段。但当作业完成时,会发生回滚。我试图在tmp表中手动保存这些位字段,然后通过Studio将旧的替换为新的,这很有效

所有语句和连接都已关闭。我核实了。我试图在一个事务的范围内进行所有这些更改。 这个应用程序运行了很长一段时间没有出现任何问题,但现在发生了一些事情

我试图找出原因,并使用了sp_whosp_who2,显示锁定查询的不同脚本,还使用SQL server profiler进行了大规模监控,并试图在Internet上找到任何解决方案。我只找到了
错误:1222,严重性:16,状态:18
这是问题的结果,而不是原因。可能是我走错了方向。对我来说,它看起来像是SQL server配置中的某些更改,而现在,由于某种原因,它保留了连接和所有更改,这些更改都是在它的范围内永远进行的。当此连接被终止时,所有内容都会回滚

如果你有任何想法,我将不胜感激。 提前感谢您的帮助

更新:我搜索并找到了一篇文章: 还有一种选择,比如: 如果Windows NT Server计算机已成功关闭连接,但如sp_who所示,客户端进程仍存在于SQL Server上,则可能表明SQL Server的连接管理存在问题。在这种情况下,您应该与主要支持提供商合作解决此问题。

也许这是我的选择。我将进一步调查。

您可以尝试此解决方案,我希望您能在这里找到您需要的东西您正在使用连接池吗?也许您使用的实现在连接返回到池时不会回滚打开的事务?@ahmed,很抱歉,但该实现没有帮助。它只是减少了回滚时间。@MarkRotterVeel,我只是使用简单的JDBC连接到数据库。问题是最后所有的东西都被回滚了。如果不使用自动提交,并且没有显式提交,那么驱动程序将在连接关闭时回滚。