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