首页 > 数据库 > SQL Server > SQL SERVER 内存爆满
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博客 ” ,链接:https://blog.itpub.net/703656/viewspace-901203/ ,如需转载,请注明出处,否则将追究法律责任。