sql2008表解锁

山野市民 2010-05-18 05:21:32
sql2008的表dbo.A被锁,如何才能解锁,不知道:spid
...全文
403 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
999朵玫瑰 2010-05-19
  • 打赏
  • 举报
回复
顶一下
zlf19810306 2010-05-19
  • 打赏
  • 举报
回复
SP_LOCK
和sp_who

来判断出进程阻塞的源头,然后kill掉。死锁很多情况是并发的情况下多个表互相操作造成的
xman_78tom 2010-05-18
  • 打赏
  • 举报
回复

-- 修改一下,可以查看 dbo.A 表上详细的锁信息,以决定 kill 那个 request_session_id
select request_session_id,l.resource_type,l.resource_description,l.request_mode,l.request_type
from sys.dm_tran_locks l
where (resource_type='OBJECT' and resource_associated_entity_id=OBJECT_ID('dbo.A'))
or (resource_type in ('PAGE','KEY','EXTENT','RID','HOBT') and
OBJECT_ID('dbo.A')=(select [OBJECT_ID] from sys.partitions where hobt_id=l.resource_associated_entity_id));
xman_78tom 2010-05-18
  • 打赏
  • 举报
回复

-- 运行下面的语句获取锁定 dbo.A 表的 spid
select distinct request_session_id from sys.dm_tran_locks l
where (resource_type='OBJECT' and resource_associated_entity_id=OBJECT_ID('dbo.A'))
or (resource_type in ('PAGE','KEY','EXTENT','RID','HOBT') and
OBJECT_ID('dbo.A')=(select [OBJECT_ID] from sys.partitions where hobt_id=l.resource_associated_entity_id));

pclion 2010-05-18
  • 打赏
  • 举报
回复
重启SQL SERVER,难道表还能锁着么?
山野市民 2010-05-18
  • 打赏
  • 举报
回复
先执行:
select DB_ID('dbo.A')

查你表所在库的库表示dbid=100(注:100是你上面语句查询出来的值)
再执行:EXEC SP_LOCK
查出 spid 和objid
再用objid
select OBJECT_NAME(objid)
查出你的表
如果查出来的表是你所要的表
值就用这个spid去执行下面的语句

declare @SPID int
Set @SPID = spid
declare @sql varchar(1000)
set @sql='kill '+cast(@SPID as varchar)
exec(@sql)







永生天地 2010-05-18
  • 打赏
  • 举报
回复
应该只有kill那个session才行
永生天地 2010-05-18
  • 打赏
  • 举报
回复
帮顶,没什么思路

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧