修复︰ 锁定和性能问题可能会出现当您启用 SQL Server 2005 中的跟踪标志 1118年如果临时表创建工作负载很高

适用于: Microsoft SQL Server 2005 Developer EditionMicrosoft SQL 2005 Server EnterpriseMicrosoft SQL Server 2005 Enterprise X64 Edition

Bug: # 50001020 (SQL 修补程序)
Microsoft 为一个可下载文件分发 Microsoft SQL Server 2005年的修补程序。因为修补程序是累积性的,所以每个新版本包含所有修补程序以及所有安全修补程序被包含在附带上一个 SQL Server 2005 修补程序版本中。

概要


本文有关此热修复程序版本的介绍如下 ︰
  • 此修复程序包修复的问题
  • 应用此修复程序包的先决条件
  • 应用此修补程序包后是否必须重新启动计算机
  • 是否有修补程序包被任何其他修补程序软件包所替换
  • 应用此修复程序包后是否必须进行任何注册表更改
  • 此修复程序包中包含的文件。

症状


在 Microsoft SQL Server 2005 中,您可能会注意到阻塞和性能相关的问题。如果下列条件都为真,则会遇到此问题︰
  • 启用跟踪标志 1118年。
  • 临时表创建工作负载很高。
  • Tempdb 数据库有多个数据文件。
在 sysprocesses 系统表中,将 tempdb 数据库 waittype 列中的值设置为 PAGELATCH。

原因


在 tempdb 数据库中存在多个数据文件时,将发生此问题。当这些多个数据文件存在时,tempdb 数据库的共享的全局分配映射表 (SGAM) 页中会发生闩锁等待时间。

解决方案


可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。仅对出现这一特定问题的系统应用此修补程序。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。

如果此修复程序可供下载,则在此知识库文章的顶部会出现“修补程序下载可用”部分。如果未显示此部分,请与 Microsoft 客户服务和支持部门联系以获取此修复程序。

注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰注意:"提供修补程序下载"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。

系统必备组件

您必须具有 Microsoft SQL Server 2005 Service Pack 2 (SP2) 要应用此修补程序的安装。

有关如何获取 SQL 服务器 2005 Service Pack 2 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰

913089如何获取最新的 service pack,SQL Server 2005

重新启动信息

应用此修补程序后,不需要重新启动计算机。

注册表信息

您不需要更改注册表。

修补程序文件信息

此修补程序仅包含解决本文列出的问题所需的那些文件。此修复程序可能不包含的所有文件,您必须将产品完全更新到最新版本。

此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用控制面板中的日期和时间项中的时区选项卡。
SQL Server 2005 中,32 位版本
文件名称文件版本文件大小日期时间平台
Microsoft.sqlserver.maintenanceplantasks.dll9.0.3166.0296,30428-Apr-200702:53x86
Msmdlocal.dll9.0.3166.015,943,53628-Apr-200702:53x86
Mssqlsystemresource.ldf不适用52428827-Apr-200719:05不适用
Mssqlsystemresource.mdf不适用40,173,56827-Apr-200719:05不适用
Rdistcom.dll2005.90.3166.0644,46428-Apr-200702:53x86
Sqlaccess.dll2005.90.3166.0350,57628-Apr-200702:53x86
Sqlservr.exe2005.90.3166.029,190,51228-Apr-200702:53x86
Sysdbupg.sql不适用510,62226-Apr-200710:04不适用
SQL Server 2005 中,64 位版本
文件名称文件版本文件大小日期时间平台
Microsoft.sqlserver.maintenanceplantasks.dll9.0.3166.0296,30428-Apr-200702:53x86
Msmdlocal.dll9.0.3166.015,943,53628-Apr-200702:53x86
Mssqlsystemresource.ldf不适用52428827-Apr-200719:05不适用
Mssqlsystemresource.mdf不适用40,173,56827-Apr-200719:05不适用
Rdistcom.dll2005.90.3166.0828,27228-Apr-200716:12x64
Sqlaccess.dll2005.90.3166.0357,74428-Apr-200716:12x86
Sqlservr.exe2005.90.3166.038,509,93628-Apr-200716:12x64
Sysdbupg.sql不适用510,62226-Apr-200710:04不适用
SQL Server 2005 中,安腾体系结构版本
文件名称文件版本文件大小日期时间平台
Microsoft.sqlserver.maintenanceplantasks.dll9.0.3166.0296,30428-Apr-200702:53x86
Msmdlocal.dll9.0.3166.049,887,08828-Apr-200710:09IA-64
Mssqlsystemresource.ldf不适用52428827-Apr-200719:05不适用
Mssqlsystemresource.mdf不适用40,173,56827-Apr-200719:05不适用
Rdistcom.dll2005.90.3166.01,885,04028-Apr-200710:09IA-64
Sqlaccess.dll2005.90.3166.0352,11228-Apr-200710:09x86
Sqlservr.exe2005.90.3166.072,626,03228-Apr-200710:09IA-64
Sysdbupg.sql不适用510,62226-Apr-200710:04不适用

解决方法


若要变通解决此问题,请禁用跟踪标志 1118年。以交互方式,您可以通过使用以下 DBCC TRACEOFF 命令禁用跟踪标志︰
DBCC TRACEOFF (1118, -1)
您还可以指定 SQL Server 服务的启动参数跟踪标记。当作为启动参数指定的跟踪标记时,SQL 服务器服务启动时,将自动启用跟踪标记。如果作为启动参数中设置跟踪标志,您仍可以使用 DBCC TRACEOFF 命令以交互方式禁用跟踪标记。

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息


本文描述的修复程序会影响只将 tempdb 数据库。此修补程序大大减少了需要通过使用跟踪标志 1118年强制统一分配。如果仍然遇到 TEMPDB 争夺您应用此修复程序,请考虑还打开跟踪标志 1118年。
有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

用于描述 Microsoft 软件更新的标准术语的824684说明

有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

328551解决︰ 对 tempdb 数据库的并发性增强功能

注意:作为一般规则,如果逻辑处理器数小于或等于 8,使用相同数量的数据文件作为逻辑处理器。如果逻辑处理器数大于 8 时,使用 8 个数据文件,然后如果仍然存在争用,增加数据文件数 (最多的逻辑处理器数) 4 的倍数直到争用降低到可接受的程度或对工作负荷/代码进行更改。