如何将sql2005的进程sqlservr.exe的内存自动释放下来?

时间:2022-08-30 17:10:52
我有一台机器的的SQL2005的内存占到了1.3G,而且在操作我写的软件的时候还在涨,操作完后也不会降下来.当内存达到一定数的时候,就连不起数据库了! 只有把sql服务重新启动后,内存释放了,数据库也连起了!不知道可不可以通过打补订的方式来解决!数据库是sql server 2005 !以前使用sql server 2000的时候也出现过这样的问题,不过通过打补订的方式解决了! 大概问题就是这样!麻烦大家帮我看看!

13 个解决方案

#1


1: 将mssql2005打上sp3
2:确定出现上述情况是否有死锁或堵塞之类

#2


突破2G内存限制 SQL2005 AWE应用测试
http://tech.ddvip.com/2008-08/122008456058960.html

#3


谢谢楼上的这位朋友!
1,没打补订,是安装的正版的!
2.如何判断有死锁或堵塞

#4


这篇文章我看过,但是不懂他这样做的目的是啥? 请问哈!sp3补订是解决啥问题?

#5


--1:
sp_lock       
--2:
Select   *   from   master..sysprocesses   where   blocked   <>   0
--3:获得SQL语句的内容
--管理器->服务器->管理->当前活动->锁/进程ID->双击ID即可

#6


--管理器->服务器->管理->当前活动->锁/进程ID->双击ID即可
这个是啥意思啊,在哪里打开的

#7


引用 6 楼 chunfangphb 的回复:
--管理器->服务器->管理->当前活动->锁/进程ID->双击ID即可
这个是啥意思啊,在哪里打开的


dbcc inputbuffer(spid)



你要是服务器资源有限的话限制下sqlserver最大内存使用吧,这样会增加sqlserver处理的时间
EXEC sys.sp_configure N'show advanced options', N'1'  RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'max server memory (MB)', N'1024'  -- 限制为1G
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0'  RECONFIGURE WITH OVERRIDE
GO


你要查的是为什么会占用那么多的内存,要确定是资源争用还是没有必要的排序太多

#8


sql2005 应该提供自动释放内存功能了吧

#9


我操作我们的软件,软件操作主要是对数据库进行操作!操作完后就会关闭连接!但是,内存却涨起来了

#10


同样的问题,我也想知道!

#11


也遇到过类似情况,一般情况下将SQL完全卸载再重装然后再打上补丁就没什么事了,数据库死锁的问题也很容易造成内存暴涨,而且即使强行结束后再执行相同操作问题依旧,本人的经验是:数据库不可太大,如果达到2G左右就应该考虑对数据库的减肥了,然后是对容易造成死锁的表进行索引重建,这样可以有效的避免死锁。当然可以通过企业管理器中右击数据库实例--属性--内存,对内存的最大值进行设置限制SQL占用的内存,但这样并不能有效的避免死锁。不建议用此方法。

#12


引用 6 楼 chunfangphb 的回复:
--管理器->服务器->管理->当前活动->锁/进程ID->双击ID即可 
这个是啥意思啊,在哪里打开的


就是企业管理器-你的服务器-...............

#13


设置最小最大内存。

#1


1: 将mssql2005打上sp3
2:确定出现上述情况是否有死锁或堵塞之类

#2


突破2G内存限制 SQL2005 AWE应用测试
http://tech.ddvip.com/2008-08/122008456058960.html

#3


谢谢楼上的这位朋友!
1,没打补订,是安装的正版的!
2.如何判断有死锁或堵塞

#4


这篇文章我看过,但是不懂他这样做的目的是啥? 请问哈!sp3补订是解决啥问题?

#5


--1:
sp_lock       
--2:
Select   *   from   master..sysprocesses   where   blocked   <>   0
--3:获得SQL语句的内容
--管理器->服务器->管理->当前活动->锁/进程ID->双击ID即可

#6


--管理器->服务器->管理->当前活动->锁/进程ID->双击ID即可
这个是啥意思啊,在哪里打开的

#7


引用 6 楼 chunfangphb 的回复:
--管理器->服务器->管理->当前活动->锁/进程ID->双击ID即可
这个是啥意思啊,在哪里打开的


dbcc inputbuffer(spid)



你要是服务器资源有限的话限制下sqlserver最大内存使用吧,这样会增加sqlserver处理的时间
EXEC sys.sp_configure N'show advanced options', N'1'  RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'max server memory (MB)', N'1024'  -- 限制为1G
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0'  RECONFIGURE WITH OVERRIDE
GO


你要查的是为什么会占用那么多的内存,要确定是资源争用还是没有必要的排序太多

#8


sql2005 应该提供自动释放内存功能了吧

#9


我操作我们的软件,软件操作主要是对数据库进行操作!操作完后就会关闭连接!但是,内存却涨起来了

#10


同样的问题,我也想知道!

#11


也遇到过类似情况,一般情况下将SQL完全卸载再重装然后再打上补丁就没什么事了,数据库死锁的问题也很容易造成内存暴涨,而且即使强行结束后再执行相同操作问题依旧,本人的经验是:数据库不可太大,如果达到2G左右就应该考虑对数据库的减肥了,然后是对容易造成死锁的表进行索引重建,这样可以有效的避免死锁。当然可以通过企业管理器中右击数据库实例--属性--内存,对内存的最大值进行设置限制SQL占用的内存,但这样并不能有效的避免死锁。不建议用此方法。

#12


引用 6 楼 chunfangphb 的回复:
--管理器->服务器->管理->当前活动->锁/进程ID->双击ID即可 
这个是啥意思啊,在哪里打开的


就是企业管理器-你的服务器-...............

#13


设置最小最大内存。