鎖定數據庫的一個表
代碼如下 復制代碼 SELECT * FROM table WITH (HOLDLOCK)
注意: 鎖定數據庫的一個表的區別
代碼如下 復制代碼 SELECT * FROM table WITH (HOLDLOCK)
其他事務可以讀取表,但不能更新刪除
代碼如下 復制代碼 SELECT * FROM table WITH (TABLOCKX)
其他事務不能讀取表,更新和刪除
SELECT 語句中“加鎖選項”的功能說明
SQL Server提供了強大而完備的鎖機制來幫助實現數據庫系統的并發性和高性能。用戶既能使用SQL Server的缺省設置也可以在select 語句中使用“加鎖選項”來實現預期的效果。 本文介紹了SELECT語句中的各項“加鎖選項”以及相應的功能說明
查看被鎖表:
代碼如下 復制代碼 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'
spid 鎖表進程 tableName 被鎖表名
[@more@]
解鎖:
創建一個臨時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中下條件查詢得到的LOCKSELECT * FROM #HarveyLock 4.KILL 相關LOCKKILL @SPID
例
代碼如下 復制代碼 declare @spid int Set @spid = 57 --鎖表進程declare @sql varchar(1000)set @sql='kill '+cast(@spid as varchar)exec(@sql)
新聞熱點
疑難解答