SQL SERVER 記憶體爆滿

Steven1981發表於2007-03-02
http://www.itpub.net/showthread.php?s=&threadid=729714[@more@]

SQL SERVER 2000
WIN2000
這個機器是作為一個C/S ERP伺服器的資料庫.
現在讓我頭疼的是:
不管這個伺服器是1G,還是2G記憶體.
ERP執行一段時間後,都給你佔滿.
因為這個ERP是第三方開發的. 問他們總是說在找問題.

因為這個ERP是C/S 客戶端直接連線資料庫
我懷疑是客戶端SESSION斷開後, 伺服器端沒有斷開.

想問一下這裡的高手,有沒有碰到過這個問題.

如果我想查是否有SESSION 虛佔記憶體.我該怎麼查?

----------------------------------------------------------

可以使用sp_who active檢視當前活動的程式數是多少

-----------------------------------------------------------

如果要查詢是否連線沒有釋放引起的, 你可以用查詢分析器連線到你的資料庫伺服器, 執行下面的程式碼:
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分鐘都沒有做任何動作的連線)


如果確實是連線沒有釋放的問題, 你可以硬行釋放連線, 不一定要改程式. 在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 '?'

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

相關文章