FIX: 您在创建或使用启用事实上配置选项重新生成索引时可能会收到一个 BPool::Map 警告

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 838459
本文已归档。它按“原样”提供,并且不再更新。
错误 #: 471227 (SHILOH_BUGS)
Microsoft SQL Server 2000 修补程序分发作为一个可下载的文件。因为该修补程序是累积性的因此每个新版本包含的所有修补程序和所有安全修复程序以前 SQL Server 2000 中包含的修补都程序版本。
症状
当您运行 CREATE INDEX 语句或语句正在运行 SQL Server 和 事实上启用了 配置选项的计算机上设置为 1,以下 BPool::Map DBCC DBREINDEX 警告和 DBCC MEMORYSTATUS 语句可能被写入该 SQL Server 错误日志:
2004-02-26 07:36:21.10 spid52 BPool::Map: 找到没有 remappable 地址。
2004-02-26 07:36:21.24 spid52 缓冲区分发: 失窃 = 149242 免费 = 389930 过程 = 2 Inram = 0 损坏 = 92791 保留 = 0 我 / O = 0 锁定 = 10,其他 = 264025
2004-02-26 07:36:21.24 spid52 缓冲区计数: 提交 = 896000 目标 = 哈希运算的 896000 = 356826 InternalReservation = 104 ExternalReservation = 280 Min 免费 = 224
2004-02-26 07:36:21.24 spid52 过程缓存: TotalProcs = 1 TotalPages = 2 InUsePages = 2
2004-02-26 07:36:21.24 spid52 动态内存管理器: 失窃 = 921 保留的 OS = 1600年操作系统提交 = 1559年正在使用的操作系统 = 1557年查询计划 = 13 优化器 = 0 常规 = 1712年实用程序 = 23 连接 = 58
2004-02-26 07:36:21.24 spid52 全局内存对象: 资源 = 1495年锁定 = 671 SQLCache = 69 复制 = 2 LockBytes = 2 ServerGlobal = 43 Xact = 21
2004-02-26 07:36:21.24 spid52 查询内存管理器: 提供 = 1 正在等待 = 0 的最大值 = 150588 可用 = 1992年
注意正在创建的索引必须驻留在简单恢复模式或大容量日志记录的恢复模型设置的数据库中。
解决方案

服务包信息

若要解决此问题,获得最新的 service pack,对于 Microsoft SQL Server 2000。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
290211如何获取最新的 SQL Server 2000 服务包

修补程序信息

此修补程序的英文版具有文件属性 (或更高版本) 下表中列出。其格式为协调通用时间 (UTC) 列出日期和时间对这些文件。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间工具中的 时区 选项卡。
   Date         Time   Version            Size    File name   ----------------------------------------------------------------------------   31-May-2003  18:45  2000.80.818.0      78,400  Console.exe         28-Oct-2003  04:21  2000.80.873.0     315,968  Custtask.dll        30-Jan-2004  16:29  2000.80.911.0      33,340  Dbmslpcn.dll        25-Apr-2003  02:12                    786,432  Distmdl.ldf   25-Apr-2003  02:12                  2,359,296  Distmdl.mdf   30-Jan-2003  01:55                        180  Drop_repl_hotfix.sql   12-Sep-2003  03:26  2000.80.859.0   1,905,216  Dtspkg.dll          26-Aug-2003  20:16  2000.80.854.0     528,960  Dtspump.dll         23-Jun-2003  22:40  2000.80.837.0   1,557,052  Dtsui.dll           23-Jun-2003  22:40  2000.80.837.0     639,552  Dtswiz.dll          24-Apr-2003  02:51                    747,927  Instdist.sql   03-May-2003  01:56                      1,581  Inst_repl_hotfix.sql   30-Jan-2004  16:29  2000.80.911.0      90,692  Msgprox.dll         01-Apr-2003  02:07                      1,873  Odsole.sql   30-Jan-2004  16:29  2000.80.911.0      62,024  Odsole70.dll        30-Jan-2004  16:29  2000.80.911.0      25,144  Opends60.dll        30-Jan-2004  16:28  2000.80.911.0      57,904  Osql.exe            02-Apr-2003  23:15  2000.80.797.0     279,104  Pfutil80.dll        04-Aug-2003  18:17                    550,780  Procsyst.sql   12-Sep-2003  00:37                     12,305  Qfe469315.sql   22-May-2003  22:57                     19,195  Qfe469571.sql   30-Jan-2004  01:16                  1,090,380  Replmerg.sql   30-Jan-2004  16:29  2000.80.911.0     221,768  Replprov.dll        30-Jan-2004  16:29  2000.80.911.0     307,784  Replrec.dll         29-Jan-2004  23:24  2000.80.911.0     159,813  Replres.rll   06-Sep-2003  00:00                  1,087,150  Replsys.sql   13-Aug-2003  16:28                    986,603  Repltran.sql   30-Jan-2004  16:29  2000.80.911.0     287,304  Rinitcom.dll        30-Jan-2004  16:29  2000.80.911.0      57,916  Semnt.dll           29-Jul-2003  20:13  2000.80.819.0     492,096  Semobj.dll          31-May-2003  18:27  2000.80.818.0     172,032  Semobj.rll   02-Jan-2004  19:42  2000.80.904.0      53,832  Snapshot.exe        09-Dec-2003  20:07                    117,834  Sp3_serv_uni.sql   05-Feb-2004  00:46  2000.80.913.0      28,672  Sqlagent.dll        05-Feb-2004  00:47  2000.80.913.0     311,872  Sqlagent.exe        19-Feb-2004  18:02  2000.80.916.0     168,001  Sqlakw32.dll        30-Jan-2004  16:29  2000.80.911.0   4,215,360  Sqldmo.dll          07-Apr-2003  17:44                     25,172  Sqldumper.exe       29-Jan-2004  23:17  2000.80.911.0      28,672  Sqlevn70.rll   05-Mar-2004  17:13  2000.80.922.0     180,792  Sqlmap70.dll        03-Sep-2003  02:56  2000.80.857.0     188,992  Sqlmmc.dll          02-Sep-2003  23:03  2000.80.857.0     479,232  Sqlmmc.rll   22-Oct-2003  00:08  2000.80.871.0     401,984  Sqlqry.dll          30-Jan-2004  16:29  2000.80.911.0      57,920  Sqlrepss.dll        09-Mar-2004  19:54  2000.80.922.0   7,614,545  Sqlservr.exe        30-Jan-2004  16:29  2000.80.911.0     590,396  Sqlsort.dll         30-Jan-2004  16:29  2000.80.911.0      45,644  Sqlvdi.dll          30-Jan-2004  16:29  2000.80.911.0     106,588  Sqsrvres.dll        30-Jan-2004  16:29  2000.80.911.0      33,340  Ssmslpcn.dll        30-Jan-2004  16:29  2000.80.911.0      82,492  Ssnetlib.dll        30-Jan-2004  16:29  2000.80.911.0      25,148  Ssnmpn70.dll        28-Oct-2003  04:21  2000.80.873.0     123,456  Stardds.dll         30-Jan-2004  16:29  2000.80.911.0     158,240  Svrnetcn.dll        30-Jan-2004  16:29  2000.80.911.0      76,416  Svrnetcn.exe        30-Apr-2003  23:52  2000.80.816.0      45,132  Ums.dll             30-Jan-2004  16:29  2000.80.911.0      98,872  Xpweb70.dll      
注意由于存在文件依赖性最新的修补程序或功能,它包含这些文件可能还包含其他文件。

注意若要能够修补程序,您必须启用跟踪标记 3940。若要动态地启用了跟踪标志,运行 DBCC TRACEON(-1,3940) 之前重新生成索引命令。然后,禁用通过运行的跟踪标记该 DBCC TRACEOFF(-1,3940) 命令。
状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

Microsoft SQL Server 2000 Service Pack 4 中,第一次已得到纠正此问题。
更多信息
当数据库使用简单恢复模式或大容量日志记录的恢复模型时,所有脏页必须被写入磁盘之前事务提交。脏页是已但不是修改尚未写入磁盘的页。SQL Server 使用一种机制,它一定数量的页修改后,甚至在事务提交之前发出异步写入请求。在提交逻辑中,数据库引擎将等待所有完成的异步写入请求。但是,SQL Server 不以限制未完成的异步写入的请求数使用任何类型的节流机制。

在出现此问题情况什么下 CREATE INDEX 操作已操作生成一个聚集的索引和表放在缓存中后,立即生成新的非聚集索引。 此外,表的大小允许 CREATE INDEX 过程执行一个内存中排序。没有中间排序的运行必须写到磁盘。因此,索引创建过程可以读取、 排序,和脏页以非常高的速率。 在颁发写入操作的调速缺乏和许多被盗的缓冲区被用于排序的组合可能会导致可映射的缓冲区,以暂时不可用整个地址的空间。

若要解决此问题,添加了跟踪标志 3940。跟踪标志 3940 限制为 1,024 的并发的异步写入请求数。启用此跟踪标记时,将刷新该交易记录的脏页的代码等待每个 1,024th 写操作完成之前将额外的代码问题写入请求。此限制从理论上来说可能导致非常小的性能会降低。由于在极少情况下出现的问题,Microsoft 决定通过使用跟踪标记,以便不接收 BPool::Map 警告的任何客户不受影响的可能的性能差来解决此问题。

由于一个 CREATE INDEX 操作以外的其他操作的可能理论上会出现此问题,但未发现其他原因。要确认此 bug 已 BPool::Map 警告的可能的原因,请从 DBCC MEMORYSTATUS 输出 SQL Server 错误日志中查找下面的其他症状:
  • 缓冲区分发: 失窃是大的值,通常可映射缓冲区的最小三分之一的帐户。准确的可映射计数取决于许多的因素包括是否与正在运行的 Windows 在 / 3gb 交换机和计算机中的物理内存。通常,可映射计数是大约 200 个为 2 GB 地址空间和 320 个大约 3 GB 地址空间。
  • 查询内存管理器之间的时差: 最大值和查询内存管理器: 可用值通常是在几个千位被盗的值。
  • 缓冲区分发: 损坏是大型,通常超过 80 个缓冲区。
有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明

警告:本文已自动翻译

属性

文章 ID:838459 - 上次审阅时间:01/17/2015 07:28:05 - 修订版本: 4.2

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 标准版, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2000 Enterprise Edition 64-bit

  • kbnosurvey kbarchive kbmt kbsqlserv2000presp4fix kbfix kbbug kbhotfixserver kbqfe KB838459 KbMtzh
反馈