SQLServer會話數管理(轉貼)

bluelight發表於2010-06-10

1. 如果要查詢是否連線沒有釋放引起的, 你可以用查詢分析器連線到你的資料庫伺服器, 執行下面的程式碼:
select * from master.dbo.sysprocesses
where spid>50
and waittype = 0x0000
and waittime = 0
and status = 'sleeping'
and last_batch < dateadd(minute, -10, getdate())
and login_time < dateadd(minute, -10, getdate())

如果這樣的程式很多, 則說明連線確實有很多連線沒有釋放(上面的查詢查詢出已經超過10分鐘都沒有做任何動作的連線)

2. 如果確實是連線沒有釋放的問題, 你可以硬行釋放連線, 不一定要改程式. 在sql server中, 建立一個job, 每10分鐘一次, 執行下面的程式碼來定時檢查並釋放掉空連線就可以了:
declare hcforeach cursor global
for
select 'kill ' + rtrim(spid) from master.dbo.sysprocesses
where spid>50
and waittype = 0x0000
and waittime = 0
and status = 'sleeping'
and last_batch < dateadd(minute, -60, getdate())
and login_time < dateadd(minute, -60, getdate())
exec sp_msforeach_worker '?'

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1724534/viewspace-1034330/,如需轉載,請註明出處,否則將追究法律責任。

相關文章