代码之家  ›  专栏  ›  技术社区  ›  Julius A

SQL Server 2005错误,系统内存不足,无法运行此查询

  •  0
  • Julius A  · 技术社区  · 17 年前
    Msg 701, Level 17, State 123, Line 1
    There is insufficient system memory to run this query.
    

    我有一个使用表值函数的查询。我多次调用函数。 这个错误是否意味着堆栈空间不足?或者我可以调整我的SQL框内存设置来解决这个问题?有什么想法吗?

    3 回复  |  直到 10 年前
        1
  •  0
  •   Jeremy Smyth    17 年前

    如果这是一个巨大的查询,并且/或者有很多用户在使用系统,每个用户都在运行大型查询,那么这是不可避免的。

    不幸的是,在SQL Server中存在一个已知问题,即使工作负载与以前相同,也会发生此错误。停止/重新启动服务器虽然非常荒谬,但通常可以解决问题。

    你可以考虑的另一件事是 dbcc free*cache 语句清除缓存占用的内存。

        2
  •  0
  •   Julius A    17 年前

    我通过重新设计查询以使用“多语句函数”解决了这个问题。 这种类型的TVF显然在磁盘上创建了一个临时表,因此不会出现内存不足的情况。

    谢谢

        3
  •  0
  •   Anvesh    10 年前

    Reference taken from this blog !

    解决这个问题有不同的选择。

    第一, 检查您的SQL Server设置是否有__min server memory_157;和_156;max server memory_157;。如果发现两个值相差很小,请增加__max server memory__。

    第二, 发现长时间运行的查询及其内存使用信息,如果此查询处于空闲状态,请验证并终止此进程。数据库性能优化是内存使用的主要问题。

    第三, 找出长时间运行查询的索引用法,因为如果没有正确索引,系统磁盘I/O会增加,并直接影响内存。

    第四, 检查虚拟内存分页文件的大小并增加该文件的大小。

    第五, 检查每个查询的__min内存大小_实际上默认为1024 KB,但在极少数情况下,您可以减小此参数的大小。实际上,这是不可取的,但你可以试试看。

    第六, 请尝试执行此DBCC命令,但这是不可取的,因为它可能会影响服务器的整体性能。但你可以试试这个。

    推荐文章