带有 SP4 的 SQL 2000 出现内存错误?

带有 SP4 的 SQL 2000 出现内存错误?

我有一台带有 DTS 包的 SQL 2000 服务器,该服务器由于内存不足错误而崩溃,而之前我们从未遇到过问题。

DTS 包返回错误“系统内存不足,无法运行此查询。” SQL 错误日志显示以下内容:(为简单起见,修剪了重复的行)

BPool::Map: no remappable address found.
Buffer Distribution:  Stolen=198908 Free=779 Procedures=349 
                      Inram=0 Dirty=10291 Kept=0
Buffer Counts:  Commited=917376 Target=917376 Hashed=717340 
                InternalReservation=174 ExternalReservation=24 
                Min Free=1024 Visible= 199856
Procedure Cache:  TotalProcs=17 TotalPages=349 InUsePages=340
Dynamic Memory Manager:  Stolen=164278 OS Reserved=1048 
                OS Committed=1026 OS In Use=1024
                Query Plan=416 Optimizer=141466
                General=16874
Buffer Counts:  Commited=917376 Target=917376 Hashed=717340
                Utilities=5840 Connection=206
                InternalReservation=174 ExternalReservation=24 
                Min Free=1024 Visible= 199856
Procedure Cache:  TotalProcs=17 TotalPages=349 InUsePages=340
                Utilities=5840 Connection=206
Global Memory Objects:  Resource=1272 Locks=279 
                SQLCache=52 Replication=2
                LockBytes=2 ServerGlobal=23
                Xact=35
Query Memory Manager:  Grants=1 Waiting=0 Maximum=35238 Available=270

有人能帮我解释/破译这些内存数字吗?

这是一台专用的 Windows2003 服务器,运行 SQL2000 Enterprise 版本 8.00.2282 (SP4)。它总共有 8GB 的​​ RAM。SQL 实例配置为最小内存 = 0,最大内存 = 7167。已启用 AWE。

我发现了很多文章似乎有点有关的:

  • 知识库 838459- 但是我们已经使用 SP4 了,这不是重新索引。
  • 知识库 815114- 似乎相关,因为我们的查询在连接中确实有很多表,其中一半以上带有 LEFT OUTER,但正如我所说,我们已经在 SP4 上了。
  • 知识库 831999- 同上。已在 SP4 上。

我承认这是一个非常棘手的查询,但多年来我们一直运行相同的查询而没有任何问题,即使该查询不是真正最优的,它也不应该导致服务器崩溃或执行失败,对吗?

有什么想法吗?即使场景不完全相同,我们是否应该尝试 kb838459 中提到的跟踪标志 3940?

是的,我们一直在鼓励他们升级到 SQL2008 64 位,但这还需要一段时间。

答案1

正如我在对这个问题的评论中所说,当我们的一台 SQL 服务器接收的使用量超过正常使用量时,我们遇到了这个问题。通过增加页面文件,我们能够在这段时间内为用户提供更多资源。

这不是我们的永久解决方案,因为在此之后,我们能够重新评估机器的性能需求并对其进行一些小升级。我不建议将此解决方案用于解决持续存在的大问题,但对我们来说,这是一个足够好的创可贴。

相关内容