T-SQL: DBCC CHECKALLOC

DBCC CHECKALLOC (Transact-SQL) 

检查指定数据库的磁盘空间分配结构的一致性。

语法

DBCC CHECKALLOC
[
        ( 'database_name' | database_id | 0
      [ , NOINDEX
      | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
        )
    [ WITH
        {
          [ ALL_ERRORMSGS ]
          [ , NO_INFOMSGS ]
          [ , TABLOCK ]
          [ , ESTIMATEONLY ]
        }
    ]
]
参数

'database_name' | database_id | 0

要检查其分配和页使用情况的数据库的名称或 ID。如果未指定,或者指定为 0,则使用当前数据库。

数据库名称必须符合

NOINDEX

指定不检查用户表的非聚集索引。

注意:
维护 NOINDEX 只是为了实现向后兼容性,并不会影响 DBCC CHECKALLOC。

 

 

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD

指定 DBCC CHECKALLOC 修复找到的错误。database_name 必须处于单用户模式。

REPAIR_ALLOW_DATA_LOSS

试图修复找到的任何错误。这些修复可能会导致一些数据丢失。REPAIR_ALLOW_DATA_LOSS 是允许修复分配错误的唯一选项。

REPAIR_FAST

保留语法只是为了向后兼容。未执行修复操作。

REPAIR_REBUILD

不适用。

重要事项:
仅将 REPAIR 选项作为最后手段使用。若要修复错误,建议您通过备份进行还原。修复操作不会考虑表本身或表之间可能存在的任何约束。如果指定的表与一个或多个约束有关,建议您在修复操作后运行 DBCC CHECKCONSTRAINTS。如果必须使用 REPAIR,则运行不带有修复选项的 DBCC CHECKDB 来查找要使用的修复级别。如果使用 REPAIR_ALLOW_DATA_LOSS 级别,则建议您在运行带有此选项的 DBCC CHECKDB 之前备份数据库。

 

 

WITH

启用要指定的选项。

ALL_ERRORMSGS

显示所有错误消息。如果未指定,则 SQL Server 2005 数据库引擎 将按每个对象最多 200 条错误消息进行显示。

NO_INFOMSGS

取消所有信息性消息和关于所用空间的报告。

TABLOCK

使 DBCC 命令获取排他数据库锁。

ESTIMATE ONLY

显示当指定所有其他选项时运行 DBCC CHECKALLOC 所需的估计 tempdb 空间大小。

标识符规则。

<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl05d7915f1,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl05img,"; </script>
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl07b6997c4,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl07img,"; </script> 备注

内部数据库快照

DBCC CHECKALLOC 可使用内部数据库快照来提供执行这些检查所需的事务的一致性。如果无法创建快照,或指定了 TABLOCK,则 DBCC CHECKALLOC 将尝试获取排他 (X) 数据库锁,以获取所需的一致性。有关锁的详细信息,请参阅

注意:
在 SQL Server 2005 中,对 tempdb 运行 DBCC CHECKALLOC 不会执行任何检查。这是因为,为了提高性能,不允许对 tempdb 使用数据库快照。这意味着无法获得所需的事务一致性。停止和启动 MSSQLSERVER 服务可以解决任何 tempdb 分配问题。此操作将删除并创建 tempdb。

 

 

了解 DBCC 错误消息

DBCC CHECKALLOC 命令完成后,会将一条消息写入 SQL Server 错误日志。如果 DBCC 命令成功执行,则消息指示成功完成以及命令运行的时间。如果 DBCC 命令在完成检查之前由于错误而停止,则消息将指示命令已终止,并指示状态值和命令运行的时间。下表列出并说明了此消息中可包含的状态值。

状态 说明

0

引发了错误号 8930。这指示导致 DBCC 命令终止的元数据损坏。

1

出现错误号 8967。存在一个内部 DBCC 错误。

2

在紧急模式数据库修复过程中出错。

3

这指示导致 DBCC 命令终止的元数据损坏。

4

检测到断定或访问违规。

5

出现终止了 DBCC 命令的未知错误。

错误报告

在 SQL Server 2005 Service Pack 1 (SP1) 中,一旦 DBCC CHECKALLOC 检测到破坏错误,就将在 SQL Server LOG 目录中创建微型转储文件 (SQLDUMPnnnn.txt)。如果为 SQL Server 实例启用了“功能使用情况数据收集”和“错误报告”功能,该文件将被自动转发给 Microsoft。收集的数据将用于改进 SQL Server 功能。有关详细信息,请参阅错误和使用情况报告设置

转储文件包含 DBCC CHECKALLOC 命令的结果以及其他诊断输出数据。该文件拥有任意访问控制列表 (DACL)。只有 SQL Server 服务帐户和 sysadmin 角色的成员有权进行访问。默认情况下,sysadmin 角色包含 Windows BUILTIN/Administrators 组和本地管理员组的所有成员。如果数据收集进程失败,DBCC 命令不会失败。

纠正错误

如果 DBCC CHECKALLOC 报告了任何错误,则建议您通过数据库备份来还原该数据库,而不是运行修复。如果备份不存在,则运行修复也可纠正报告的错误;但是,纠正这些错误时可能需要删除某些页,进而删除数据。

修复可在用户事务内执行。允许回滚所做的更改。如果回滚所做的更改,则数据库仍将包含错误,因此必须通过备份进行还原。修复完成后,备份该数据库。

锁模式
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl1254606a7,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl12img,"; </script> 结果集
DBCC results for 'master'.
***************************************************************
Table sysobjects                Object ID 1.
Index ID 1         FirstIAM (1:11)   Root (1:12)    Dpages 22.
    Index ID 1. 24 pages used in 5 dedicated extents.
Index ID 2         FirstIAM (1:1368)   Root (1:1362)    Dpages 10.
    Index ID 2. 12 pages used in 2 dedicated extents.
Index ID 3         FirstIAM (1:1392)   Root (1:1408)    Dpages 4.
    Index ID 3. 6 pages used in 0 dedicated extents.
Total number of extents is 7.
***************************************************************
'...'
***************************************************************
Table spt_server_info                Object ID 1938105945.
Index ID 1         FirstIAM (1:520)   Root (1:508)    Dpages 1.
    Index ID 1. 3 pages used in 0 dedicated extents.
Total number of extents is 0.
***************************************************************
Processed 52 entries in sysindexes for database ID 1.
File 1. Number of extents = 210, used pages = 1126, reserved pages = 1280.
           File 1 (number of mixed extents = 73, mixed pages = 184).
    Object ID 1, Index ID 0, data extents 5, pages 24, mixed extent pages 9.
'...'
    Object ID 1938105945, Index ID 0, data extents 0, pages 3, mixed extent pages 3.
Total number of extents = 210, used pages = 1126, reserved pages = 1280 in this database.
       (number of mixed extents = 73, mixed pages = 184) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC results for 'master'.
***************************************************************
Table sys.sysrowsetcolumns                Object ID 4.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). FirstIAM (1:98). Root (1:94). Dpages 7.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). 9 pages used in 1 dedicated extents.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). 0 pages used in 0 dedicated extents.
Total number of extents is 1.
...
***************************************************************
Processed 201 entries in system catalog for database ID 1.
File 1. Number of extents = 44, used pages = 300, reserved pages = 345.
           File 1 (number of mixed extents = 29, mixed pages = 225).
    Object ID 4, index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
    Object ID 5, index ID 1, partition ID 327680, alloc unit ID 327680 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 7, index ID 1, partition ID 458752, alloc unit ID 458752 (type In-row data), data extents 0, pages 5, mixed extent pages 5.
    Object ID 8, index ID 0, partition ID 524288, alloc unit ID 524288 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 13, index ID 1, partition ID 851968, alloc unit ID 851968 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
    Object ID 15, index ID 1, partition ID 983040, alloc unit ID 983040 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 26, index ID 1, partition ID 281474978414592, alloc unit ID 1703937 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
    Object ID 27, index ID 1, partition ID 281474978480128, alloc unit ID 1769473 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
    Object ID 27, index ID 2, partition ID 562949955190784, alloc unit ID 1769474 (type In-row data), index extents 0, pages 3, mixed extent pages 3.
...
    Object ID 1179151246, index ID 1, partition ID 72057594038845440, alloc unit ID 13435136 (type In-row data), data extents 2, pages 18, mixed extent pages 8.
    Object ID 1179151246, index ID 2, partition ID 72057594038910976, alloc unit ID 13566208 (type In-row data), index extents 1, pages 16, mixed extent pages 8.
    Object ID 1911677858, index ID 0, partition ID 72057594039631872, alloc unit ID 15073536 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
Total number of extents = 41, used pages = 289, reserved pages = 323 in this database.
       (number of mixed extents = 27, mixed pages = 211) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl161ba0b48,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl16img,"; </script>
示例
-- Check the current database.
DBCC CHECKALLOC;
GO
-- Check the AdventureWorks database.
DBCC CHECKALLOC ('AdventureWorks');
GO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值