请单击以进行评分并提供反馈
MSDN
MSDN Library
SQL Server
SQL Server 2008
数据库引擎
技术参考
社区内容
本节内容
统计 批注 (0)
全部折叠/全部展开 全部折叠
同时提供下列产品的其他版本:
SQL Server 2008 联机丛书(2009 年 7 月)
DBCC (Transact-SQL)

Transact-SQL 编程语言提供 DBCC 语句作为 SQL Server 的数据库控制台命令。

数据库控制台命令语句可分为以下类别。

命令类别 执行

维护

对数据库、索引或文件组进行维护的任务。

杂项

杂项任务,如启用跟踪标志或从内存中删除 DLL。

信息

收集并显示各种类型信息的任务。

验证

对数据库、表、索引、目录、文件组或数据库页的分配进行的验证操作。

DBCC 命令使用输入参数并返回值。所有 DBCC 命令参数都可以接受 Unicode 和 DBCS 文字。

以下 DBCC 命令对 数据库引擎 创建的内部只读数据库快照执行操作。这样可以防止在执行这些命令时出现阻塞和并发问题。有关详细信息,请参阅数据库快照

DBCC CHECKALLOC

DBCC CHECKDB

DBCC CHECKCATALOG

DBCC CHECKFILEGROUP

DBCC CHECKTABLE

 

在执行这些 DBCC 命令之一时,数据库引擎创建一个数据库快照,并将其置于在事务上一致的状态。然后,DBCC 命令对该快照运行检查。DBCC 命令完成后,将删除该快照。

有时,不需要内部数据库快照或无法创建内部数据库快照。出现这种情况时,将针对实际数据库执行 DBCC 命令。如果数据库联机,DBCC 命令使用表锁确保它所检查的对象的一致性。该行为与指定 WITH TABLOCK 选项时的行为相同。

执行 DBCC 命令时,不创建内部数据库快照:

  • 针对 master,并且 SQL Server 的实例以单用户模式运行。
  • 针对 master 之外的其他数据库,但已使用 ALTER DATABASE 语句将该数据库置于单用户模式。
  • 针对只读数据库。
  • 针对已使用 ALTER DATABASE 语句设置为紧急模式的数据库。
  • 针对 tempdb。在这种情况下,由于内部限制不能创建数据库快照。
  • 使用 WITH TABLOCK 选项。在这种情况下,DBCC 允许该请求但不创建数据库快照。

当针对以下对象执行 DBCC 命令时,该命令将使用表锁而不是内部数据库快照:

  • 只读文件组
  • FAT 文件系统
  • 不支持“命名流”的卷
  • 不支持“备用流”的卷
ms188796.note(zh-cn,SQL.100).gif注意:
尝试使用 WITH TABLOCK 选项运行 DBCC CHECKALLOC 或 DBCC CHECKDB 的等价部分时,需要使用数据库 X 锁。该数据库锁不能对 tempdb 或 master 设置,对其他所有数据库进行设置时也可能会失败。

ms188796.note(zh-cn,SQL.100).gif注意:
如果无法创建内部数据库快照,则对 master 运行 DBCC CHECKDB 时将失败。

sys.dm_exec_requests 目录视图包含有关 DBCC CHECKDB、CHECKFILEGROUP 和 CHECKTABLE 命令的进度和当前执行阶段的信息。percent_complete 列指示命令完成的百分比,command 列报告命令执行的当前阶段。

进度单位的定义取决于 DBCC 命令的当前执行阶段。有时,根据数据库页的粒度报告进度,而在其他阶段,则根据单个数据库或分配修复的粒度报告进度。下表对每个执行阶段以及命令报告进度的粒度进行了说明。

执行阶段 说明 进度报告粒度

DBCC TABLE CHECK

在该阶段中将检查数据库中对象的逻辑和物理一致性。

在数据库页级别报告进度。

每检查 1000 个数据库页更新进程报告值一次。 

DBCC TABLE REPAIR

如果指定 REPAIR_FAST、REPAIR_REBUILD 或 REPAIR_ALLOW_DATA_LOSS 并且存在必须修复的对象错误,则在该阶段执行数据库修复。

在单个修复级别报告进度。

每次完成修复时更新计数器。

DBCC ALLOC CHECK

在该阶段中将检查数据库中的分配结构。

ms188796.note(zh-cn,SQL.100).gif注意:
DBCC CHECKALLOC 执行相同检查。

不报告进度。

DBCC ALLOC REPAIR

如果指定 REPAIR_FAST、REPAIR_REBUILD 或 REPAIR_ALLOW_DATA_LOSS 并且存在必须修复的分配错误,则在该阶段执行数据库修复。

不报告进度。

DBCC SYS CHECK

在该阶段中将检查数据库系统表。

在数据库页级别报告进度。

每检查 1000 个数据库页更新进程报告值一次。

DBCC SYS REPAIR

如果指定 REPAIR_FAST、REPAIR_REBUILD 或 REPAIR_ALLOW_DATA_LOSS 并且存在必须修复的系统表错误,则在该阶段执行数据库修复。

在单个修复级别报告进度。

每次完成修复时更新计数器。

DBCC SSB CHECK

在该阶段中将检查 SQL Server Service Broker 对象。

ms188796.note(zh-cn,SQL.100).gif注意:
执行 DBCC CHECKTABLE 时,不执行此阶段。

不报告进度。

DBCC CHECKCATALOG

在该阶段中将检查数据库目录的一致性。

ms188796.note(zh-cn,SQL.100).gif注意:
执行 DBCC CHECKTABLE 时,不执行此阶段。

不报告进度。

DBCC IVIEW CHECK

在该阶段中将检查数据库中存在的任何索引视图的逻辑一致性。

在被检查的单个数据库视图级别报告进度。

社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利 | 商标 | 隐私权声明
Page view tracker