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值即可,不妨先试试,如果重建解决你的问题,那很有可能就出在这里了