AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 10503
Accepted
Aaron Daniels
Aaron Daniels
Asked: 2009-05-21 10:56:24 +0800 CST2009-05-21 10:56:24 +0800 CST 2009-05-21 10:56:24 +0800 CST

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

  • 772

我们的一台 SQL Server 已经稳定运行了一段时间(几年),最近出现了内存不足的错误。从应用程序事件日志中,我们看到:

事件编号:701

说明:系统内存不足,无法运行此查询。

我们管理此服务器的团队主要由兼任系统管理员职责的开发人员组成。然而,我们的主要专长是开发。话虽如此,我们对如何解决此问题感到茫然。我们一直在搜索论坛和诸如此类的东西,但没有找到任何匹配的东西

因此,这里有一些详细信息可帮助进行故障排除:

  • 我们的最小服务器内存设置为 0。
  • 我们的最大服务器内存设置为 2000。
  • 总物理内存为 3,325.85 MB(来自 sysinfo)。
  • 总虚拟内存为 7.10 GB(来自 sysinfo)。
  • 我们没有使用 AWE 来分配内存,但我们现在要看看它是否会有所作为。
  • 此错误是由备份事务日志的作业引发的,而不是运行查询。
  • 我们有许多链接服务器。另一边的 RDBMS 类型是 SQL Server(2005 和 2000)、Oracle 10g 和 OSI PI 系统。
  • 此时是断断续续的。我们似乎无法将任何时间或事件与错误相关联。
  • 当然,重新启动似乎会使它消失一段时间,由于错误消息的性质,这是有道理的。
  • 该服务器三倍于应用程序服务器(几个 Windows 服务)和 Web 服务器以及数据库服务器。

编辑:

我们在 SP3 上。我们发现的大多数帖子都是 SP1 之前的,这不适用于我们。

SELECT  SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

返回

9.00.4035.00 SP3 标准版

sql-server memory
  • 5 5 个回答
  • 12297 Views

5 个回答

  • Voted
  1. John Sansom
    2009-05-22T01:21:30+08:002009-05-22T01:21:30+08:00

    错误消息“系统内存不足,无法运行此查询。” 指的是虚拟地址空间 (VAS) 不可用,而不是传统意义上的内存,即在 SQL Server 进程空间内。

    鉴于您在这台服务器上仅运行 3GB,而 SQL Server 已分配到 2GB,这意味着操作系统以及更重要的是盒子上的其他任何东西都只有不到 1GB 的空间可供使用。这不是很多内存。

    如果这个问题确实是内存泄漏的结果,那么它是正在消耗 SQL Server 进程空间 (memToLeave) 之外的 VAS。

    我建议使用 -g 启动参数为 memToLeave 部分分配更多内存。

    有关详细信息,请参阅以下文章:

    http://www.johnsansom.com/sql-server-memory-configuration-determining-memtoleave-settings/

    您可能还希望减少 SQL Server 的最大内存设置,但我会将此作为最后的手段。

    • 7
  2. Best Answer
    Mike Thien
    2009-05-23T10:45:29+08:002009-05-23T10:45:29+08:00

    我建议也使用 -g 启动参数。它似乎适用于大多数人,并且可能也适用于您。我唯一担心的是根本问题可能无法解决。例如,如果由于链接服务器而导致内存泄漏,并且 MTL 增加到 512Mb,那么内存问题之间的时间会更长吗?我不知道答案,但我倾向于同意 UndertheFold 的观点,因为 perfmon 可能是一个好的开始。

    • 4
  3. splattne
    2009-05-21T11:45:59+08:002009-05-21T11:45:59+08:00

    根据此论坛帖子,这可能与链接服务器驱动程序的内存泄漏有关:

    以下是微软告诉我们的。

    显然,使用链接服务器处理数据,特别是 fox pro 驱动程序会导致内存泄漏,随着时间的推移而累积。

    • 1
  4. CPU_BUSY
    2009-05-21T12:53:07+08:002009-05-21T12:53:07+08:00

    该服务器三倍于应用程序服务器(几个 Windows 服务)和 Web 服务器以及数据库服务器。

    我会设置你的最小内存 - 这些其他进程很可能正在从 SQL 中“窃取”内存

    您可以使用 perfmon 运行计数器日志来确认这一点和/或给自己更多信息来确定真正的问题是什么。

    • 0
  5. Anvesh
    2016-02-28T22:56:34+08:002016-02-28T22:56:34+08:00

    参考来自这个博客!

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

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

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

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

    四、检查虚拟内存分页文件的大小,增加这个文件的大小。

    第五,检查“min memory per query”的大小,实际上它默认为 1024 KB,但在极少数情况下,您可以减小此参数的大小。实际上,这是不可取的,但您可以尝试一下。

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

    • 0

相关问题

  • 如何启用与 SQL Server 实例的加密连接?

  • 笔记本电脑 - RAM 与磁盘的性能

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 在 SQL Server 中,何时应将 PRIMARY Data FileGroup 拆分为辅助数据文件?

  • 如何从 SQL Server 2008 中的备份中排除索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve