首页 技术交流 SQL Server 手工 锁表、查询被锁表、解锁相关语句 正文

SQL Server 手工 锁表、查询被锁表、解锁相关语句

发布日期:2023年11月01日 13:46        阅读次数:572

                                   

--锁表(其它事务不能读、更新、删除)

BEGIN TRAN

SELECT * FROM <表名> WITH(TABLOCKX);

WAITFOR delay '00:00:20'

COMMIT TRAN



--锁表(其它事务只能读,不能更新、删除)

BEGIN TRAN

SELECT * FROM <表名> WITH(HOLDLOCK);

WAITFOR delay '00:00:20'

COMMIT TRAN


--锁部分行

BEGIN TRAN

SELECT * FROM <表名>  WITH(XLOCK) WHERE ID IN ('81A2EDF9-D1FD-4037-A17B-1369FD3B169B');

WAITFOR delay '00:01:20'

COMMIT TRAN


--查看被锁表

select   request_session_id   锁表进程,OBJECT_NAME(resource_associated_entity_id) 被锁表名  

from   sys.dm_tran_locks where resource_type='OBJECT';


--解锁

declare @spid  int

Set @spid  = 55 --锁表进程

declare @sql varchar(1000)

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

exec(@sql)

                       

评论:

共 0 页 0 条记录,当前为第 1 页