繁体   English   中英

SQL事务超时

[英]SQL Transaction Times Out

当我在管理工作室中执行以下SQL时,查询返回预期的结果:

SELECT MAX(ID) FROM table WHERE field = value;

但是,当我的客户端应用程序(WinForms)在事务中间执行此SQL时,查询超时而不返回值。 我怀疑这是因为事务包括其他SQL语句,它们正在添加/修改相同的“表”。

我该如何解决这个问题?

“SELECT MAX(ID)”是一个聚合函数,会在表上执行大量锁定 - 可能会对表中的所有记录执行共享读锁定,当然对所有符合条件的记录,以及其他依赖是否使用行锁或页锁。 如果有任何的这些记录的MAX要锁定一个优秀的写锁,那么MAX将超时。 您需要同时了解其他锁定的位置。 如果您使用的是SQL Server,则可以使用SQL事件探查器获取跟踪信息,该跟踪信息将显示该表上的所有锁定,包括来自其他事务的锁定。

最后,我只是在事务开始之前使用MAX函数移动了SQL语句,并将该值存储为变量,以便以后在转换中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM