某些情況下,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
批量處理解鎖語句:
–查詢被鎖表
select request_session_id spid,object_name(resource_associated_entity_id) tablename
from sys.dm_tran_locks where resource_type=『object』
–批量解鎖
declare @spid int
–迴圈所有實驗室資料
declare spid_cursor cursor --定義游標
for (select request_session_id spid
from sys.dm_tran_locks where resource_type=『object』 ) --查詢出被鎖表spid
open spid_cursor; --開啟游標
fetch next from spid_cursor into @spid; --讀取第一行資料
while @@fetch_status = 0
begin
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)
fetch next from spid_cursor into @spid; --讀取下一行資料
endclose spid_cursor; --關閉游標
deallocate spid_cursor; --釋放游標
sqlserver鎖表 解鎖 檢視銷表
sqlserver中怎麼鎖表 解鎖 檢視銷表呢,下面我以三個不同的例項給各位朋友詳細介紹一下有需要的朋友可參考一下。更多詳細內容請檢視 鎖定資料庫的乙個表 如下 複製 select from table with holdlock 注意 鎖定資料庫的乙個表的區別 如下 複製 select from ...
oracle mysql檢視鎖表與解鎖表
在開發的時候,有時候不管是通過cmd運算元據庫 還是通過資料庫工具運算元據庫,有時候不正當的操作會將表鎖了 從開發的角度來看,表現為當在程式中通過 對資料庫進行更新 刪除 新增操作時候,執行無效,有時候還會等待與異常丟擲。在orcla與mysql中,如何檢視鎖表與解鎖表 select from v ...
oracle 檢視鎖表,與解鎖
select t2.username,t2.sid,t2.serial t3.object name t2.osuser,t2.machine,t2.program,t2.logon time,t2.command,t2.lockwait,t2.saddr,t2.paddr,t2.taddr,t2....