查看被鎖表信息
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