首页 新闻 会员 周边

未能执行所请求的操作因为可用内存少于最小查询内存请减小 'min memory per query'

0
悬赏园豆:30 [已关闭问题]

使用bcb开发的信息系统,数据库采用sql server 2000。运行大概四五天后出现”未能执行所请求的操作因为可用内存少于最小查询内存请减小 'min memory per query' 服务器配置选项的配置值“,又要重启服务器。不知这是什么原因引起的。

问题补充: 设置过min memory per query,但是出现这个问题都是在sql server服务器程序到达max server memory一段时间后出现的,提高min memory per query的值也处理不了问题。程序使用公共的数据库连接对象,每次访问数据库都先关闭再打开。 只有二十几个客户端在线,访问量很小。跟踪sql语句没执行特殊的语句或频繁的sql语句。聊天功能和在线用户列表会去定时访问数据库。 数据量很小,经常访问的表才几千条数据。sql服务端运行先是头两天占满服务器内存后,再过三四天出现上面的问题。这期间每天执行的操作都是重复的。
每天看看的主页 每天看看 | 初学一级 | 园豆:60
提问于:2010-03-02 12:55
< >
分享
其他回答(3)
0

直接缓解问题的办法如下:

  如何设置最小查询内存(企业管理器)   
  1.展开一个服务器组。   
  2.右击一个服务器,再单击"属性"。   
  3.单击"内存"选项卡。   
  4.在"最小查询内存"框中,键入或选择一个介于   512   到   2147483647   KB   之间的值。    
  默认值为   1024   KB。

想解决问题,最好还是要检查一下程序是否存在数据库连接未及时关闭,SQL语句是否可在优化,数据库中是否存在比较消耗资源的计划任务或者触发器

查尔斯 | 园豆:3832 (老鸟四级) | 2010-03-02 13:04
补丁是否都已安装,是否可能服务器中毒导致内存消耗
支持(0) 反对(1) 查尔斯 | 园豆:3832 (老鸟四级) | 2010-03-02 14:26
0

先用跟踪分析sql执行情况,然后针对具体优化(比如:频繁执行的sql可否缓等)。

sql server 的查询优化,减少数据库请求次数(缓存)。

steven hu | 园豆:542 (小虾三级) | 2010-03-02 13:32
0

是不是你每次查询结果的记录非常多造成的?

这种问题,我觉得单纯的设置min memory per query这种参数可能治标不治本的,

应该结合业务考虑一下,你的程序是否需要一次性查询出这么多结果吗?

langford | 园豆:710 (小虾三级) | 2010-03-02 13:37
0

减小“每次查询占用的最小内存”服务器配置选项的配置值,或者减少服务器的查询负载。

下面的列表概述了有助于解决内存错误的一般步骤:

  1. 验证其他应用程序或服务是否占用此服务器上的内存。重新配置不太重要的应用程序或服务,使其占用更少的内存。
  2. 开始收集 SQL Server: Buffer ManagerSQL Server: Memory Manager 的性能监视器计数器。
  3. 检查下面的 SQL Server 内存配置参数:
    • max server memory
    • min server memory
    • awe enabled
    • min memory per query
    注意不正常的设置。根据需要将其更正。SQL Server 联机丛书中的“设置服务器配置选项”中列出了默认设置。
  4. 如果正在使用地址窗口化扩展插件 (AWE),请验证是否启用了 Windows 安全设置“锁定内存页”
  5. 检查工作负荷(例如,并发会话数,当前执行的查询)。

以下操作可以使更多内存可供 SQL Server 使用:

  • 如果除 SQL Server 外的应用程序正在占用资源,请尝试停止运行这些应用程序,或者考虑在单独的服务器上运行它们。这样做将消除外部内存压力。
  • 如果已配置 max server memory,请增大其设置。

运行以下 DBCC 命令以释放几个 SQL Server 内存缓存。

  • DBCC FREESYSTEMCACHE
  • DBCC FREESESSIONCACHE
  • DBCC FREEPROCCACHE

如果问题仍存在,则您将需要进一步调查,可能需要减小工作负荷。

风影极光 | 园豆:1573 (小虾三级) | 2010-03-02 14:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册