查看MSSQL鎖表與解鎖

查看被鎖表信息

select   request_session_id   PID ,OBJECT_NAME(resource_associated_entity_id) TABLENAME  
from   sys.dm_tran_locks where resource_type='OBJECT';

解鎖被鎖表

declare @spid  int 
Set @spid  = 109 --鎖表進程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid  as varchar)
exec(@sql)

NOLOCK(不加鎖)

進行查詢時不加任何鎖,在此情況下有可能讀取到髒數據.僅用於查詢。

鎖表

TABLOCKX(表鎖)

其它事務只能讀,不能更新、刪除。

BEGIN TRAN
SELECT * FROM <tablename> WITH(TABLOCKX);
WAITFOR delay '00:00:20'
COMMIT TRAN

PAGLOCK(頁鎖)

HOLDLOCK(保持鎖)

不允許讀、更新、刪除操作,直至事物結束。

EGIN TRAN
SELECT * FROM <tablename> WITH(HOLDLOCK);
WAITFOR delay '00:00:20'
COMMIT TRAN

UPDLOCK(修改鎖)

XLOCK

鎖定指定數據

BEGIN TRAN
SELECT * FROM <tablename>  WITH(XLOCK) WHERE ID IN ('81A2EDF9-D1FD-4037-A17B-1369FD3B169B');
WAITFOR delay '00:01:20'
COMMIT TRAN
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章