今天公司刚入手一台联想的服务器,按领导指示,安装了IIS和数据库(MS SQL server 2005),都装好了过后,当时没在意,就搬到了机房,上架网络接通后,突然发现内存冲到了160多G(256内存),发现是数据库的问题,停止数据库服务后,又恢复正常。关键是现在数据库都还没有连接使用,只是运行程序内存就占用这么高,百思不得其解,请各位大神指导指导。附图:
停止SQL服务后:

开启SQL服务后:

------解决思路----------------------
这是SQL Server缓冲池的预期行为,充分利用内存来防止页面切换,提高命中率。如果这台server不是专用的数据库服务器,担心它影响其他应用,可以去"服务器属性->内存"中设置最大值/最小值来加以限制。
----------------------------------------------------------------------------------------------------------------------------
微软关于此现象的解释:
在您启动 SQL Server 之后,SQL Server 内存使用量将会持续稳定上升,即使当服务器上活动很少时也不会下降。另外,任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降,直到可用内存降到 4 至 10 MB 为止。
仅仅出现这种状态不表示内存泄漏。此行为是正常的,并且是 SQL Server 缓冲池的预期行为。
默认情况下,SQL Server 根据操作系统报告的物理内存加载动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止内存页面交换(在 4 至 10 MB 之间),SQL Server 缓冲池就会继续增大。像在与 SQL Server 分配内存位于相同计算机上的其他进程一样,SQL Server 缓冲区管理器将在需要的时候释放内存。SQL Server 每秒可以释放和获取几兆字节的内存,从而使它可以快速适应内存分配变化。
您可以通过服务器内存最小值和服务器内存最大值配置选项设置 SQL Server 数据库引擎使用的内存(缓冲池)量的上下限。在设置服务器内存最小值和服务器内存最大值选项之前,请查阅以下 Microsoft 知识库文章中标题为"内存"一节中的参考信息:
319942 HOW TO:Determine Proper SQL Server Configuration Settings(确定正确的 SQL Server 配置设置)
请注意,服务器内存最大值选项只限制 SQL Server 缓冲池的大小。服务器内存最大值选项不限制剩余的未保留内存区域,SQL Server 准备将该区域分配给其他组件,例如扩展存储过程、COM 对象、以及非共享 DLL、EXE 和 MAPI 组件。由于前面的分配,SQL Server 专用字节超过服务器内存最大值配置是很正常的。有关此未保留内存区域中分配的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 316749 PRB:在使用大量数据库时可能没有足够的虚拟内存...
SQL Server 联机图书;主题:"服务器内存最小值和最大值的影响";"内存体系结构";"服务器内存选项";"SQL Server 内存池"
------解决思路----------------------
你内存这么大这个设置应该也是正常的,你可以参考看一下下面这个图的内存设置。
