读书人

SQL 的独占有关问题

发布时间: 2013-02-20 12:23:22 作者: rapoo

SQL 的独占问题
各位大神,

求救了!
在SQL上,我针对一张表一条数据进行独占,但意外的其中的另一条数据也被独占了!
但我的查询中没有写到独占那一个,
这是什么情况?

具体:
这是我独占A
BEGIN TRANSACTION
SELECT Number FROM NumberTable
WITH(UPDLOCK,NOWAIT)
WHERE Number = 'A'
COMMIT TRANSACTION

但当我想独占B的时候,他却说我已经独占了!

BEGIN TRANSACTION
SELECT Number FROM NumberTable
WITH(UPDLOCK,NOWAIT)
WHERE Number = 'B'

错误提示:Lock request time out period exceeded.

求大神帮帮忙,谢谢!


[解决办法]
楼主,有种可能是索引行中的KeyHashValue值生成了重复值,这种的结果就是你锁定一行,相同值的其他行也会一起锁定。

对于解释KeyHashValue值可能说的要很多,你先重建下你的索引,让它们重新生成一遍KeyHashValue值即可,不妨先试试,如果重建解决你的问题,那很有可能就出在这里了

读书人网 >SQL Server

热点推荐