最近有台SQL Server的CPU使用率常常飆高,觀察似乎是連線的數量太多了,有很多連線是程式使用完沒有close的關係,短時間人手不足,沒法修正程式,只好手動清除啦,不過一個一個清太累囉,還是寫段陳述式來清囉
DECLARE @spid int, @SQLstr nvarchar(128)
--僅針對某個登入來清理囉,所以請自行更換"使用者"
DECLARE spids_cr CURSOR FOR
SELECT sp.spid FROM master..sysprocesses sp
LEFT OUTER JOIN master..sysdatabases sd ON sd.dbid = sp.dbid
WHERE sp.loginame='使用者' AND sp.net_address<>''
and sp.last_batch <= DATEADD(dd,-7,getdate())
OPEN spids_cr
FETCH spids_cr INTO @spid
WHILE (@@FETCH_STATUS=0)
BEGIN
SET @SQLstr = 'KILL ' + CAST(@spid AS varchar)
EXEC sp_executesql @SQLstr
FETCH spids_cr INTO @spid
END
CLOSE spids_cr
DEALLOCATE spids_cr
0 意見:
張貼留言