sqlserver鎖表、解鎖、查看銷表的方法
鎖定數(shù)據(jù)庫的一個表
SELECT * FROM table WITH (HOLDLOCK)
注意: 鎖定數(shù)據(jù)庫的一個表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK)
其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX)
其他事務(wù)不能讀取表,更新和刪除
SELECT 語句中“加鎖選項”的功能說明
SQL Server提供了強(qiáng)大而完備的鎖機(jī)制來幫助實現(xiàn)數(shù)據(jù)庫系統(tǒng)的并發(fā)性和高性能。用戶既能使用SQL Server的缺省設(shè)置也可以在select 語句中使用“加鎖選項”來實現(xiàn)預(yù)期的效果。 本文介紹了SELECT語句中的各項“加鎖選項”以及相應(yīng)的功能說明
查看被鎖表:
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)建一個臨時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)
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信