鎖定數(shù)據(jù)庫的一個(gè)表
復(fù)制代碼 代碼如下:
SELECT * FROM table WITH (HOLDLOCK)
注意: 鎖定數(shù)據(jù)庫的一個(gè)表的區(qū)別
復(fù)制代碼 代碼如下:
SELECT * FROM table WITH (HOLDLOCK)
其他事務(wù)可以讀取表,但不能更新刪除
復(fù)制代碼 代碼如下:
SELECT * FROM table WITH (TABLOCKX)
其他事務(wù)不能讀取表,更新和刪除
SELECT 語句中“加鎖選項(xiàng)”的功能說明
SQL Server提供了強(qiáng)大而完備的鎖機(jī)制來幫助實(shí)現(xiàn)數(shù)據(jù)庫系統(tǒng)的并發(fā)性和高性能。用戶既能使用SQL Server的缺省設(shè)置也可以在select 語句中使用“加鎖選項(xiàng)”來實(shí)現(xiàn)預(yù)期的效果。 本文介紹了SELECT語句中的各項(xiàng)“加鎖選項(xiàng)”以及相應(yīng)的功能說明
查看被鎖表:
復(fù)制代碼 代碼如下:
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中下條件查詢得到的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)
您可能感興趣的文章:- sql server中死鎖排查的全過程分享
- 詳解SQL Server中的事務(wù)與鎖問題
- sqlserver:查詢鎖住sql以及解鎖方法
- SQL Server學(xué)習(xí)筆記之事務(wù)、鎖定、阻塞、死鎖用法詳解
- Sql Server 死鎖的監(jiān)控分析解決思路
- Sql Server如何查看被鎖的表及解鎖的方法
- SqlServer查詢和Kill進(jìn)程死鎖的語句
- sqlserver進(jìn)程死鎖關(guān)閉的方法
- 查找sqlserver查詢死鎖源頭的方法 sqlserver死鎖監(jiān)控
- SQL Server三種鎖定模式的知識(shí)講解