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

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)