0

我跑几个sql语句(选择,更新和插入)一个数据库连接和事务中,获得的SQL的一个是获取一个账户的余额检索事务中单列挂

select top 1 balance from sample_table where account_id={accountId} order by id desc 

此SQL只挂并且只有在账户{accountId}的表“sample_table”中没有实际记录的情况下,才能正常工作。 挂起表示它会一直等到发生超时异常错误,并且在此“等待”期间,从Sql Server管理工作室执行SQL也会挂起。

我使用SQL Server 2008

感谢

编辑:

多次尝试后执行同样的动作,它的工作,所有的记录都正确插入,然后应用程序的工作原理是那之后的魅力。 恢复数据库,然后问题又回来了。

+0

没有看到您的架构,很难说;表上的任何主键或索引?我会假设'ID'是主要可能与自动增量和account_id将是一个外键到哪里,并成为主键? – Codexer

+0

ID是主键 account_id已编入索引 – sami

+0

转到Management Studio中的活动监视器并停止与该特定数据库关联的进程。有可能已经开启了交易并且从未关闭......它可能发生在代码方面,这会给你一个干净的石板。检查所有插入/更新语句,以确保它们在完成时正确地提交/关闭,否则会发生锁定并导致问题。你提到这只是声明的一部分,如果是这样,你可以发布其余的声明吗? – Codexer

回答

0

的问题是重建表,基本上执行此SQL后固定:

alter table sample_table rebuild