你目前正处于脱机状态,正在等待 Internet 重新连接

FIX: 同步过程很慢,并且 CPU 使用率很高被配置为分发服务器 SQL Server 2005 中的计算机上

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

点击这里察看该文章的英文版: 959013
症状
当在 Microsoft SQL Server 2005 中对事务复制发布对订阅进行同步时,在同步过程很慢。在同步过程是在计算机被配置为分发服务器上高 CPU 使用率。

如果满足下列条件都为真,就会出现此问题:
  • MSrepl_commands 表包含很多行的发布服务器数据库。例如对于 MSrepl_commands 表包含对发布服务器数据库的 800,000 行。
  • 在同步过程将初始化订阅服务器上,或重新初始化订阅服务器。或者,您以增量方式添加项目到出版物之前同步订阅。
注意 此问题不是特定于 SQL Server 2005 年的事务复制的。满足以下条件时,也可能为任何查询出现此问题:
  • 查询包含多行的表。例如对于在表中包含的 800,000 行。
  • 在查询中使用 FAST 查询提示或 TOP 查询提示。
原因
因为 SQL Server 2005 sp_MSget_repl_commands 存储过程中生成一个查询的效率低下的执行计划,则会出现此问题。执行拙劣的查询使用 FAST 查询提示或 TOP 查询提示的情况下,才会出现此问题。执行计划的执行联接谓词不发布的 聚集索引查找 未显示的查询运算符。
解决方案

服务包信息

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

状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。 SQL Server 2005 Service Pack 3 中,第一次已得到纠正此问题。
更多信息
此修补程序引入了跟踪标志 4126。您必须启用此跟踪标记,若要解决此问题。若要以便此跟踪标记使用 DBCC TRACEON 语句,或指定为 SQL Server 服务启动参数的跟踪标志 4126。

有关 SQL Server 2000 中发生的同一问题的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
929131FIX: SQL Server 2000 在同步过程很慢,并且 CPU 使用率很高计算机被配置为分发服务器上

有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明

警告:本文已自动翻译

属性

文章 ID:959013 - 上次审阅时间:12/16/2008 00:47:03 - 修订版本: 1.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL 2005 Server Workgroup

  • kbmt kbtshoot kbsql2005engine kbexpertiseadvanced kbfix kbbug KB959013 KbMtzh
反馈
"> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("