清除資料庫死鎖程序

2021-07-10 21:13:05 字數 722 閱讀 5675

資料庫經常會由於某些資源占用而導致系統非常的緩慢,而重啟伺服器對使用者的體驗又不是很好,但是我們可以採取一種比較折中的辦法。

1.查詢資料庫程序

select spid=cast(spid as varchar(20)) from master..sysprocesses

2.做成批處理

create proc [dbo].[p_killspid] 

@dbname varchar(200)    --要關閉程序的資料庫名  

as   

declare @sql  nvarchar(500)   

declare @spid nvarchar(20) 

declare #tb cursor for 

select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname) 

open #tb 

fetch next from #tb into @spid 

while @@fetch_status=0 

begin   

exec('kill '+@spid) 

fetch next from #tb into @spid 

end   

close #tb 

deallocate #tb 



自動清除資料庫程序堵塞的作業

如果某程序將其他堵塞超過55秒,則自動將其清除,並將其執行的語句報錯出來。可將語句建成作業,每分鐘執行一次。但有風險,不可作為常規用法,只能在短期內作為捕捉問題的工具,在有跟蹤的情況下使用 declare sql nvarchar 4000 spid int select top 1 spid sp...

檢視資料庫死鎖程序

回答 use master 必須在master資料庫中建立 goif exists select from dbo.sysobjects where id object id n dbo p lockinfo and objectproperty id,n isprocedure 1 drop pr...

Kill 資料庫死鎖程序

exec a lockinfo kill lock spid 0,show spid if nolock 0 exec a lockinfo kill lock spid 1,show spid if nolock 0 alter proc dbo a lockinfo kill lock spid...