0

我们有一个 Windows 窗体应用程序,应用程序的后端是 SQL Server Express 2005/2008。我们的应用程序可以安装在 Windows XP SP3/Windows Vista/Windows 7 上。

我们在 SQL Server Express 中观察到了巨大的内存泄漏。

通常,即使用户不使用应用程序,也会有两个进程在运行:

  1. 检查文件可用性的轮询过程。(如果文件不可用,则只触发一个查询来检查某些配置设置)

  2. 一个调度过程。(此过程每分钟触发一次查询以检查任何计划任务)

我们观察到 SQL Server (sqlsrvr.exe) 的内存使用量不断增加。在大约一个小时内,内存使用量达到了 1GB,并且从未下降。

我们还注意到,如果轮询过程的间隔增加,那么内存使用量会逐渐增加,但确实会增加。

SQL Server 较高的内存使用率会降低机器性能和机器上运行的所有其他应用程序的性能。

在这种情况下,请提供控制 SQL Server 内存使用的建议。

PFB详细信息:

  1. 导致问题的软件:SQL Server 2005/2008 Express 版本(命名实例)

  2. 可模拟问题的操作系统:Windows XP SP3/ Windows Vista/ Windows 7

问候,

阿布奈特

4

1 回答 1

1

SQL Server 旨在获取系统上的所有内存并将其用于其内部缓存。永远不要在与 SQL Server 相同的机器上运行任何其他东西。这不是泄漏,是预期和期望的行为。按设计。请参阅内存管理器架构

作为一种特殊情况,SQL Server Express 版本将其内部缓冲池大小限制为 1Gb。但是,缓冲池并不是 SQL Server 消耗的唯一内存。您可以通过为max server memory.

于 2012-10-04T06:51:55.457 回答