SQL 2000与SP4上的内存错误?

我有一个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 

有人可以帮我解释/解密这些内存号码吗?

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

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

  • KB 838459 – 但是我们已经在SP4上,这不是一个reindex。
  • KB 815114 – 看起来相关,因为我们的查询在连接中确实有很多表,超过一半的表有一个左外部,但正如我所说,我们已经在SP4上。
  • KB 831999 – 同上。 已经在SP4上。

我承认这是一个很大的问题,但是我们已经运行了相同的查询多年,没有任何问题,即使查询不是最佳的,也不会导致服务器崩溃或执行失败。

有任何想法吗? 我们应该尝试kb838459中提到的跟踪标志3940,即使情况不完全相同?

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

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

这不是我们的永久性修复,因为在此之后,我们能够重新评估机器的性能需求,并给它一些小的升级。 我不会推荐使用这个解决scheme来处理大的问题,但对我们来说,这是一个足够好的乐队援助。