鎖定數(shù)據(jù)庫(kù)的一個(gè)表
SELECT * FROM table WITH (HOLDLOCK)
注意: 鎖定數(shù)據(jù)庫(kù)的一個(gè)表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK)
其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX)
其他事務(wù)不能讀取表,更新和刪除
SELECT 語(yǔ)句中“加鎖選項(xiàng)”的功能說(shuō)明
SQL Server提供了強(qiáng)大而完備的鎖機(jī)制來(lái)幫助實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的并發(fā)性和高性能。用戶(hù)既能使用SQL Server的缺省設(shè)置也可以在select 語(yǔ)句中使用“加鎖選項(xiàng)”來(lái)實(shí)現(xiàn)預(yù)期的效果。 本文介紹了SELECT語(yǔ)句中的各項(xiàng)“加鎖選項(xiàng)”以及相應(yīng)的功能說(shuō)明
查看被鎖表:
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type='OBJECT'
spid 鎖表進(jìn)程
tableName 被鎖表名
[@more@]
解鎖:
創(chuàng)建一個(gè)臨時(shí)Table
CREATE TABLE #HarveyLock(SPID INT,DBID INT,OBJID INT,INDID INT,TYPE VARCHAR(100),RESOURCE VARCHAR(100),MODE VARCHAR(100),STATUS VARCHAR(100))
將Lock信息存入該Table
INSERT INTO #HarveyLock EXEC SP_LOCK
3.在Table中下條件查詢(xún)得到的LOCK
SELECT * FROM #HarveyLock
4.KILL 相關(guān)LOCK
KILL @SPID
例
declare @spid int Set @spid = 57 --鎖表進(jìn)程declare @sql varchar(1000)set @sql='kill '+cast(@spid as varchar)exec(@sql)