2009年2月22日 星期日

刪除七天前無效的連線

最近有台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 意見:

張貼留言