【问题标题】:Weird SQL Server memory errors after upgrading to 64-bit升级到 64 位后出现奇怪的 SQL Server 内存错误
【发布时间】:2025-12-07 21:55:01
【问题描述】:

我们刚刚将生产数据库服务器从 32 位“升级”到了 64 位。它在 Windows Server 2003 上运行 SQL Server 2005 Standard。在升级后的晚上,服务器近一个小时不可用 - 客户端请求超时。然后问题似乎自行解决了。我对这个问题的唯一线索是 SQL 服务器日志中的内容:

LazyWriter:警告,未找到可用缓冲区。

内存管理器 虚拟机保留 = 8470288 KB VM 已提交 = 2167672 KB AWE 分配 = 0 KB 保留内存 = 1024 KB 使用中的保留内存 = 0 KB

消息 内存节点 ID = 0 虚拟机保留 = 8464528 KB VM 已提交 = 2162000 KB AWE 分配 = 0 KB 单页分配器 = 103960 KB 多页分配器 = 31832 KB

MEMORYCLERK_SQLGENERAL(总计) 虚拟机保留 = 0 KB VM 已提交 = 0 KB AWE 分配 = 0 KB SM 保留 = 0 KB SM 已提交 = 0 KB 单页分配器 = 4352 KB

然后有更多类似的消息以 MEMORYCLERK 开头。

有人知道发生了什么吗?似乎它的内存已经用完了,而且,当然,服务器只有 2GB 的物理 RAM,这不是今天的标准,但它肯定不应该完全停止工作吗?我应该将SQL允许使用的最大内存设置为1.6GB左右吗?我还能做些什么(显然,除了安装更多 RAM)?

【问题讨论】:

    标签: sql-server memory


    【解决方案1】:

    2GB 肯定不是很多。事实上,我相信 Microsoft 建议您使用 2GB 内存来运行操作系统和其他任务。

    Check this blog postingthis microsoft forum posting 了解更多信息。

    内存很便宜,如果可以的话,添加更多。


    (来源:wordpress.com

    【讨论】:

      【解决方案2】:

      有一些零星的报告称 MSSQL 分配了足够的内存导致磁盘出现页面错误1 - 当然,这会导致性能急剧下降。

      虽然我没有看到任何来自 MS 的官方消息,但报告显示将最大内存设置为比物理 RAM 小 512M 到 1G 之间的某个位置应该会有所帮助。

      企业版允许您防止 MSSQL 页面被分页,这也应该可以解决问题。而且,显然,更多的 RAM 会有所帮助 - 但可能不会缓解它。

      1 关于 MSSQL 是否试图分配过多 RAM、操作系统是否将其分页或 MSSQL 只是分配到错误的池,存在一些争议。无论如何,max mem 应该可以帮助案例 1 和 2,而 SP2 应该可以解决案例 3。

      编辑:一位同事向我指出了一个相关的KB article,其中列出了一些修补程序。它引用了不同的错误消息(您运行的是 SP2 吗?),但症状和行为似乎适合您的情况。

      【讨论】:

        最近更新 更多