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 将检查数据库中所有页的分配,而不管其所属的页类型或对象类型。它还可验证各种内部结构,这些结构可用于跟踪这些页以及它们之间的关系。

如果未指定 NO_INFOMSGS,则 DBCC CHECKALLOC 将收集有关数据库中所有对象的空间使用情况信息。然后将这一信息与找到的任何错误一起进行打印。

注意:
DBCC CHECKALLOC 功能包含在

DBCC CHECKDB 和 DBCC CHECKFILEGROUP 中。这意味着您不必将 DBCC CHECKALLOC 与这些语句分开运行。

内部数据库快照

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 CHECKALLOC 返回的信息。

说明

FirstIAM

仅供内部使用。

Root

仅供内部使用。

Dpages

数据页计数。

Pages used

分配的页。

Dedicated extents

分配给对象的区数。

如果使用混合分配页,则可能有未分配区数的页。

DBCC CHECKALLOC 还会报告每条索引和每个文件中分区的分配摘要。此摘要说明了数据的分布情况。

说明

Reserved pages

分配给索引的页和已分配区数中未使用的页。

Used pages

分配给索引和索引正在使用的页。

Partition ID

仅供内部使用。

Alloc unit ID

仅供内部使用。

In-row data

页包含索引或堆数据。

LOB data

页包含 varchar(max)、nvarchar(max)、varbinary(max)、text、ntext、xml 和 image 数据。

Row-overflow data

页包含已推送到行外的可变长度列数据。

DBCC CHECKALLOC 将返回以下结果集(值可能有所不同),指定了 ESTIMATEONLY 或 NO_INFOMSGS 时除外。

如果指定了 ESTIMATEONLY,则 DBCC CHECKALLOC 将返回以下结果集。

Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
34

(1 row(s) affected)

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

权限

要求具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。

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>
示例
下面的示例将对当前数据库和 AdventureWorks 数据库执行 DBCC CHECKALLOC
-- Check the current database.
DBCC CHECKALLOC;
GO
-- Check the AdventureWorks database.
DBCC CHECKALLOC ('AdventureWorks');
GO

T-SQL: DBCC CHECKALLOC相关推荐

  1. SQL SERVER DBCC命令解释

    SQL SERVER DBCC命令解释 八点钟起床一直搞到现在,好多还不太记得,先放上来以后慢慢修改 2007-05-01 12:56:28 --------------------- --1 dbc ...

  2. SQL SERVER DBCC 命令集整理

    为什么80%的码农都做不了架构师?>>>    1. DBCC CHECKALLOC 检查指定数据库的磁盘空间分配结构的一致性. DBCC CHECKALLOC [     (dat ...

  3. 《Microsoft Sql server 2008 Internals》读书笔记--第十一章DBCC Internals(11)

    <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...

  4. sql server 碎片整理——DBCC SHOWCONTIG

    转自: 1.http://blog.sina.com.cn/s/blog_6d2675450101ks6i.html 2.http://www.cnblogs.com/CareySon/archive ...

  5. MS Sql Server 数据库或表修复(DBCC CHECKDB)

    MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令.  1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL ...

  6. 常用SQL Server数据修复命令DBCC一览(转载)

    MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL查 ...

  7. SQL Server DBCC

    一.什么是DBCC DBCC 是SQL Server提供的一组控制台命令,可以用来检查数据库的逻辑一致性及物理一致性. 二.DBCC分类 1.维护语句 对数据库.索引或文件组进行维护的任务. 2.杂项 ...

  8. sql dbcc_SQL Server中的DBCC命令的概念和基础

    sql dbcc Many DBA's and database developers aren't very familiar with DBCC commands (aka Database Co ...

  9. 对于超大型SQL SERVER数据库执行DBCC操作

    对于数据库维护,主要使用DBCC CHECKDB来实现,以下是对大型数据库的使用说明,小型数据库一般直接使用就可以了: 1.2008(2005我不确认)已经实现了快照检查,也就是当你执行DBCC时,D ...

最新文章

  1. linux 内核将两个设备相关联,linux用户空间和内核空间交换数据
  2. 外星人台式电脑_执掌游戏世界 外星人ALIENWARE m15丨17.9mm机身轻悍降临【电脑组装】公众号分享台式机笔记本电脑 京东商城特惠通道...
  3. 前端学习(3199):jsx小练习
  4. 关于RabbitMQ以及RabbitMQ和Spring的整合
  5. Redis之jedis连接池
  6. linux 下 libpcap 简单使用
  7. web重启tomcat_使用docker构建jdk镜像和web服务镜像
  8. Android平台上使用SDL官方demo播放视频(使用ffmpeg最新版解码)
  9. python画图设置字体_python Matplotlib画图之调整字体大小的示例
  10. Eclipse中文版汉化教程(详细图解)
  11. win64 oracle下载,oracle 11g 64位下载
  12. 认知水平高下定义及提高认知水平的方法
  13. 采样频率,采样率,转换速率
  14. 关于Ubuntu双击打不开文件夹的解决方案
  15. 基于VHDL利用PS2键盘控制的电子密码锁设计
  16. PostgreSQL 收缩膨胀表或索引 - pg_squeeze or pg_repack
  17. 数据仓库 Hive 从入门到小牛(一)
  18. vc 文字转换到机内码,输入汉字和数字, 输出一串16进制码(数字-〉ASII码,汉字—〉国标码)...
  19. Linux ARM平台开发系列讲解(GMSL摄像头篇)1.1 GMSL协议介绍
  20. 门禁系统服务器和客户端区别,从门禁系统功能决定选购

热门文章

  1. ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
  2. HDOJ 2112 HDU Today (最短路 Dijkstra SPFA)
  3. 实际参数与形式参数的区别
  4. java什么是classpath_Java 基础 - CLASSPATH 到底是什么
  5. tab s2 android 8,mini 3一边去!三星GalaxyTab S2 8.0评测
  6. 安卓逆向——dy急速版设备抓包分析
  7. linux 如何安装maven
  8. wxPython官方文档翻译第一期初稿
  9. 大数据分析必学的六个核心技术点
  10. 58同城mysql实践