Transact-SQL 参考

DBCC CHECKFILEGROUP

检查指定文件组中的所有表(在当前数据库中)的分配和结构完整性。

语法

DBCC CHECKFILEGROUP
    ( [ { 'filegroup' | filegroup_id } ]
        [ , NOINDEX ]
    )    [ WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ]
                    [ , [ TABLOCK ] ]
                    [ , [ ESTIMATEONLY ] ]
                    }
        ]

参数

'filegroup'

是文件组名称,要对其表分配和结构完整性进行检查。如果未指定,则默认为主文件组。文件组名称必须符合标识符的规则。有关更多信息,请参见使用标识符

filegroup_id

是文件组标识 (ID) 号,要对其表分配和结构完整性进行检查。从含有该文件组的数据库中的 FILEGROUP_ID 函数或 sysfilegroups 系统表获得 filegroup_id

NOINDEX

指定不检查非系统表的非聚集索引。这会减少执行时间。NOINDEX 对系统表没有影响。在默认文件组上运行时,DBCC CHECKFILEGROUP 总是对所有的系统表索引进行检查。

WITH

指定有关下列内容的选项:返回错误信息的数量、获得的锁或估计的 tempdb 要求。如果 ALL_ERRORMSGS 和 NO_INFOMSGS 都未指定,则 Microsoft® SQL Server™ 将返回全部错误信息。

ALL_ERRORMSGS

显示所有错误信息。如果未指定,SQL Server 就按每个表最多 200 条错误信息进行显示。按对象 ID 对错误信息进行排序(从 tempdb 中生成的消息除外)。

NO_INFOMSGS

禁止显示所有信息性消息和关于所用空间的报告。

TABLOCK

导致 DBCC CHECKFILEGROUP 获得共享表锁。

ESTIMATE ONLY

显示与所有其它指定选项一起运行 DBCC CHECKFILEGROUP 时所需的估计 tempdb 空间大小。

注释

DBCC CHECKFILEGROUP 和 DBCC CHECKDB 是相似的 DBCC 语句。主要差别在于 DBCC CHECKFILEGROUP 所执行的检查:仅限于单个的指定文件组和所需的表。

对数据库中的所有文件组执行 DBCC CHECKFILEGROUP 语句与运行单个 DBCC CHECKDB 语句相同。唯一的差别在于:如果表的索引在不同文件组上,则将多次检查该表和索引(对包含表或其索引的每个文件组检查一次)。

操作期间,DBCC CHECKFILEGROUP 阻止对文件组中的所有表和索引(以及其索引在当前所检查的文件组中的其它文件组中的表)进行修改。

DBCC CHECKFILEGROUP 执行期间,不允许对表执行创建和删除操作。

默认情况下,DBCC CHECKFILEGROUP 不获取表锁。但它获取架构锁,该锁防止对元数据进行更改,但允许更改数据。DBCC 语句收集信息,然后扫描任何日志以查找其它所做的任何更改,在扫描的结尾将两组信息合并在一起以产生数据的一致视图。

如果指定 TABLOCK 选项,DBCC CHECKFILEGROUP 获取共享表锁。这样可允许某些类别的错误有更详细的错误信息,并通过避免使用事务日志数据而将所要求的 tempdb 空间大小降为最低。

DBCC CHECKFILEGROUP 对每个文件组的 textntextimage 页的链接和大小以及文件组中所有页的分配进行检查。

DBCC CHECKFILEGROUP 还对索引视图执行物理一致性检查。只用于向后兼容性的 NOINDEX 选项也适用于索引视图。

对于文件组中的每个表,DBCC CHECKFILEGROUP 检查其:

如果所显式检查的文件组中的非聚集索引与其它文件组中的表相关联,则也要对其它文件组中的表(最初未显式检查)进行检查,因为要对索引进行验证也要求对基表结构进行验证。然而,如果所检查的文件组中的表在其它文件组中有非聚集索引,则不对该索引进行检查,因为:

聚集索引和表不可能在不同文件组上,所以这些注意事项只适用于非聚集索引。

filegroupfilegroup_id 的引用只在当前数据库中有用。执行 DBCC CHECKFILEGROUP之前,确保将上下文切换到适当的数据库。有关更改当前数据库的更多信息,请参见 USE

默认情况下,DBCC CHECKFILEGROUP 对对象执行并行检查。并行度由查询处理器自动确定。最大并行度的配置方式与并行查询相同。使用 sp_configure 系统存储过程限制可用于 DBCC 检查的最大处理器数。有关更多信息,请参见 max degree of parallelism 选项

使用跟踪标记 2528 可禁用并行检查。有关更多信息,请参见跟踪标记

结果集

不管是否指定任何选项(NOINDEX 除外),如果没有指定数据库,DBCC CHECKFILEGROUP 将为当前数据库返回以下结果集(值可能会有变化):

DBCC results for 'master'.
DBCC results for 'sysobjects'.
There are 862 rows in 13 pages for object 'sysobjects'.
DBCC results for 'sysindexes'.
There are 80 rows in 3 pages for object 'sysindexes'.
'...'
DBCC results for 'spt_provider_types'.
There are 23 rows in 1 pages for object 'spt_provider_types'.
CHECKFILEGROUP found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

如果指定 NO_INFOMSGS 选项,DBCC CHECKFILEGROUP 将返回以下结果集:

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

如果指定 ESTIMATEONLY 选项,DBCC CHECKFILEGROUP 将返回以下结果集。

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

(1 row(s) affected)

Estimated TEMPDB space needed for CHECKTABLES (KB) 
-------------------------------------------------- 
207

(1 row(s) affected)

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

DBCC CHECKFILEGROUP 权限默认授予 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员且不可转让。

示例
A. 检查 pubs 数据库中的 PRIMARY 文件组

下例检查 pubs 数据库主文件组。

USE pubs
GO
DBCC CHECKFILEGROUP
GO
B. 检查没有非聚集索引的 pubs PRIMARY 文件组

下例通过指定主文件组的标识号和指定 NOINDEX 选项对 pubs 数据库主文件组(不包括非聚集索引)进行检查。

USE pubs
GO
DBCC CHECKFILEGROUP (1, NOINDEX)
GO

请参见

SQL Server 2000 的各种版本所支持的功能

FILEGROUP_ID

如何配置可用于并行查询的处理器数目(企业管理器)

物理数据库构架

sp_helpfile

sp_helpfilegroup

sysfilegroups