SqlServer查看鎖表與解鎖


某些情況下,sqlserver的表會被鎖住,比如某個會話窗口有數據一直沒提交,窗口又沒關閉,這時表就會被鎖住

其他任何連接查詢表數據時都不會返回

這時需要手工殺掉產生死鎖的會話ID,才能恢復正常

 

查看被鎖表:

select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   
from   sys.dm_tran_locks where resource_type='OBJECT'

spid   鎖表進程 
tableName   被鎖表名

解鎖:

declare @spid  int 
Set @spid  = 57 --鎖表進程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid  as varchar)
exec(@sql)

 

sql server在執行查詢語句時會鎖表。在鎖表期間禁止增刪改操作。

如果不想鎖表,那就再表名或別名后面加上WITH(NOLOCK)

如下所示:

SELECT Id FROM dbo.T_Table WITH(NOLOCK) WHERE Id = 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM