Applies ToSQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Service Pack 3 SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2008 Service Pack 2 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Enterprise Core SQL Server 2012 Express SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core

Microsoft 发布 Microsoft SQL Server 2008 R2、SQL Server 2008 R2 SP1 和 SQL Server 2008 作为一个可下载文件的修复。 由于修补程序是累积的,因此每个新版本都包含以前 SQL Server 2008 R2、SQL Server 2008 R2 SP1 和 SQL Server 2008 修复版本中包含的所有修补程序和所有安全修补程序。

简介

DBCC CHECKDB命令平衡了性能和资源之间的需求。 因此,默认情况下,当对数据库运行一致性检查时, DBCC CHECKDB 命令可能不会最大化资源使用。 例如,当对数据库运行一致性检查时, DBCC CHECKDB 命令可能不会最大化磁盘输入/输出使用。

解决方案

累积更新信息

SQL Server 2008 Service Pack 2

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 2 的累积更新9。 有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2673382 SQL Server 2008 Service Pack 2 的累积更新包9

注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关详细信息,请参阅 Microsoft 知识库中的以下文章:

2402659 发布 SQL Server 2008 Service Pack 2 后发布的 SQL Server 2008 版本

为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 2 修补程序应用到 SQL Server 2008 Service Pack 2 的安装。 默认情况下,SQL Server service pack 中提供的任何修补程序都包含在下一个 SQL Server service pack 中。

SQL Server 2008 Service Pack 3

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 3 的累积更新4。 有关此累积更新包的详细信息,请参阅 Microsoft 知识库中的以下文章:

2673383 SQL Server 2008 的累积更新程序包 4 Service Pack 3

注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关详细信息,请参阅 Microsoft 知识库中的以下文章:

2629969 发布 SQL server 2008 Service Pack 3 后发布的 SQL Server 2008 版本

为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 3 修补程序应用到 SQL Server 2008 Service Pack 3 的安装。 默认情况下,SQL Server service pack 中提供的任何修补程序都包含在下一个 SQL Server service pack 中。

SQL Server 2008 R2 的累积更新包11

此问题的修补程序首次在累积更新11中发布。 有关如何为 SQL Server 2008 R2 获取此累积更新包的详细信息,请参阅 Microsoft 知识库中的以下文章:

2633145 SQL Server 2008 R2 的累积更新包11

注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关详细信息,请参阅 Microsoft 知识库中的以下文章:

981356 发布 SQL Server 2008 R2 后发布的 SQL Server 2008 R2 版本

SQL Server 2008 R2 SP1 的累积更新程序包4

此问题的修补程序首次在累积更新4中发布。 有关如何获取此累积更新包的 SQL Server 2008 R2 SP1 的详细信息,请参阅 Microsoft 知识库中的以下文章:

2633146 SQL Server 2008 R2 SP1 的累积更新程序包4

注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 R2 SP1 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关详细信息,请参阅 Microsoft 知识库中的以下文章:

2567616 发布 SQL Server 2008 R2 SP1 后发布的 SQL Server 2008 R2 版本

SQL Server 2012

SQL Server 2012 包含这些修补程序的代码更改。 跟踪标记2562和2549的说明同样适用于 SQL Server 2012。 但是,修复以减少 DBCC_MULTIOBJECT_SCANNER 闩锁上的争用在 SQL Server 2012 中不需要跟踪标记2562。 默认情况下,这些更改包括在 SQL Server 2012 中。

更多信息

此累积更新引入了两个跟踪标志,以便在用户执行 DBCC CHECKDB命令时更好地最大化磁盘 i/o 资源使用。 虽然这些改进仅针对PHYSICAL_ONLY  选项,但它们还可以提高不使用PHYSICAL_ONLY选项的DBCC CHECKDB命令的整体性能。 跟踪标记2562 此跟踪标志包括以下更改:

  • 在单个 "批处理" 中运行 DBCC CHECKDB 命令,无论数据库中有多少个索引。 默认情况下, DBCC CHECKDB 命令通过使用 "批处理" 概念限制所生成的索引数或 "事实",来尝试最大程度地减少 tempdb资源。 此跟踪标志将强制所有处理转换为一个批处理。

  • 改进内部处理,用于确定要从数据库中读取的页面。 这可减少DBCC_MULTIOBJECT_SCANNER闩锁上的争用。

使用此跟踪标志的一个效果是可能会增加tempdb的空间要求   。 Tempdb 可能会增长到由DBCC CHECKDB命令处理的用户数据库的5% 或更长。 因此, tempdb  当你使用此跟踪标记以避免自动增长时,我们建议你在数据库大小的至少5% 的情况下使用预大小的 tempdb,这可能会降低DBCC CHECKDB命令的性能。 注意 跟踪标记2562是会话级跟踪标记。 你可以在会话级别启用它。 跟踪标记2549DBCC CHECKDB命令生成一个内部页面列表,以在所有数据库文件中为每个唯一磁盘驱动器读取。 此逻辑根据每个文件的物理文件名的驱动器号确定唯一的磁盘驱动器。 如果基础磁盘在驱动器号时实际上是唯一的,则 DBCC CHECKDB 命令会将这些磁盘视为一个磁盘。 启用此跟踪标志后,每个数据库文件都将被假定在唯一的磁盘驱动器上。 不要使用此跟踪标志,除非您知道每个文件都基于唯一的物理磁盘。 注意 跟踪标记2549是全局跟踪标志。 若要启用它,你必须将其用作启动参数或使用 DBCC TRACEON (2549,-1)。 虽然这些跟踪标志提高了针对DBCC checkdb选项的目标使用的dbcc checkdb命令的性能   ,但某些用户可能看不到性能方面的任何改进。 虽然这些跟踪标志提高了磁盘 i/o 资源的使用,但磁盘资源的基础性能可能会限制DBCC CHECKDB 命令的整体性能。 请注意以下限制:

  • 性能改进不是为了提高使用 " 修复" 选项时的性能。 例如,性能改进不是为了提高使用REPAIR_ALLOW_DATA_LOSS选项时的性能。

  • 改进不会影响DBCC CHECKALLOC命令。

  • 改进可帮助DBCC CHECKTABLE命令的性能与很多页面的索引。 但是,改进不针对提高 DBCC CHECKTABLE 命令的性能。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。