SQL Server 鎖表、查詢被鎖表、解鎖相關語句

    SQL Server 鎖表、查詢被鎖表、解鎖相關語句,供參考。sql

--鎖表(其它事務不能讀、更新、刪除)
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)
相關文章
相關標籤/搜索