加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver锁与解锁

发布时间:2020-12-12 13:36:06 所属栏目:MsSql教程 来源:网络整理
导读:【sqlserver】sqlserver锁与解锁;查询锁表的进程和计算机机器名ip --查看当前数据库中的所有的锁及锁住的表名称(spid即为锁对应的进程) select ? request_session_id ? spid ,OBJECT_NAME(resource_associated_entity_id) tableName ? from ? sys.dm_tran_l

【sqlserver】sqlserver锁与解锁;查询锁表的进程和计算机机器名ip

--查看当前数据库中的所有的锁及锁住的表名称(spid即为锁对应的进程)

select ? request_session_id ? spid,OBJECT_NAME(resource_associated_entity_id) tableName ?

from ? sys.dm_tran_locks where resource_type='OBJECT'


--查看当前数据库中的所有的阻塞进程

select * from ?master..sysprocesses where blocked >0

--根据具体的进程号查询对应的ip地址

select client_net_address ip地址,* from sys.dm_exec_connections where session_id =59

--根据具体的进程号查询对应的计算机名以及登陆方式

select hostname 计算机名,net_address 物理地址,program_name 登陆方式,* from master..sysprocesses where spid =59

--结束一个进程(解锁)

kill 323

或者

declare @spid ?int

Set @spid ?= 283 --锁表进程

declare @sql varchar(1000)

set @sql='kill '+cast(@spid ?as varchar)

exec(@sql)


--如果锁表的进程非常多,则需要批量解锁(注意:会同时结束正常的业务操作,一般在数据库死锁后使用)

--批量循环解锁

--commit;

DECLARE @spid int

DECLARE CUR CURSOR

FOR select ? request_session_id ? spid from ? sys.dm_tran_locks where resource_type='OBJECT'

OPEN CUR

--SELECT spid FROM sysprocesses WHERE dbid = 5

FETCH NEXT FROM CUR INTO @spid

WHILE @@FETCH_STATUS = 0

BEGIN

--commit;

EXEC ('KILL ' + @spid )

FETCH NEXT FROM CUR INTO @spid

END

CLOSE CUR

DEALLOCATE CUR

--commit;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读