SQL Server 2005错误,没有足够的系统内存来运行此查询

时间:2009-06-23 09:40:44

标签: sql-server-2005

Msg 701, Level 17, State 123, Line 1
There is insufficient system memory to run this query.

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

3 个答案:

答案 0 :(得分:0)

如果这是一个巨大的查询,和/或有很多用户使用该系统,每个运行大型查询,这是不可避免的。

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

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

答案 1 :(得分:0)

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

由于

答案 2 :(得分:0)

<强> Reference taken from this blog !

有不同的替代方案来解决这个问题。

首先,检查SQL Server设置是否为“min server memory”和“max server memory”。如果您发现两者的差异非常小,请增加“最大服务器内存”。

其次,找出长时间运行的查询及其内存使用情况信息,如果此查询处于空闲状态,请验证并终止此过程。数据库性能优化是内存使用的主要内容。

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

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

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

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