檢查指定文件組中的所有表(在當前數(shù)據(jù)庫中)的分配和結(jié)構(gòu)完整性。
DBCC CHECKFILEGROUP
( [ { 'filegroup' | filegroup_id } ]
[ , NOINDEX ]
) [ WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
}
]
'filegroup'
是文件組名稱,要對其表分配和結(jié)構(gòu)完整性進行檢查。如果未指定,則默認為主文件組。文件組名稱必須符合標識符的規(guī)則。有關(guān)更多信息,請參見使用標識符。
filegroup_id
是文件組標識 (ID) 號,要對其表分配和結(jié)構(gòu)完整性進行檢查。從含有該文件組的數(shù)據(jù)庫中的 FILEGROUP_ID 函數(shù)或 sysfilegroups 系統(tǒng)表獲得 filegroup_id。
NOINDEX
指定不檢查非系統(tǒng)表的非聚集索引。這會減少執(zhí)行時間。NOINDEX 對系統(tǒng)表沒有影響。在默認文件組上運行時,DBCC CHECKFILEGROUP 總是對所有的系統(tǒng)表索引進行檢查。
WITH
指定有關(guān)下列內(nèi)容的選項:返回錯誤信息的數(shù)量、獲得的鎖或估計的 tempdb 要求。如果 ALL_ERRORMSGS 和 NO_INFOMSGS 都未指定,則 Microsoft® SQL Server™ 將返回全部錯誤信息。
ALL_ERRORMSGS
顯示所有錯誤信息。如果未指定,SQL Server 就按每個表最多 200 條錯誤信息進行顯示。按對象 ID 對錯誤信息進行排序(從 tempdb 中生成的消息除外)。
NO_INFOMSGS
禁止顯示所有信息性消息和關(guān)于所用空間的報告。
TABLOCK
導(dǎo)致 DBCC CHECKFILEGROUP 獲得共享表鎖。
ESTIMATE ONLY
顯示與所有其它指定選項一起運行 DBCC CHECKFILEGROUP 時所需的估計 tempdb 空間大小。
DBCC CHECKFILEGROUP 和 DBCC CHECKDB 是相似的 DBCC 語句。主要差別在于 DBCC CHECKFILEGROUP 所執(zhí)行的檢查:僅限于單個的指定文件組和所需的表。
對數(shù)據(jù)庫中的所有文件組執(zhí)行 DBCC CHECKFILEGROUP 語句與運行單個 DBCC CHECKDB 語句相同。唯一的差別在于:如果表的索引在不同文件組上,則將多次檢查該表和索引(對包含表或其索引的每個文件組檢查一次)。
操作期間,DBCC CHECKFILEGROUP 阻止對文件組中的所有表和索引(以及其索引在當前所檢查的文件組中的其它文件組中的表)進行修改。
DBCC CHECKFILEGROUP 執(zhí)行期間,不允許對表執(zhí)行創(chuàng)建和刪除操作。
默認情況下,DBCC CHECKFILEGROUP 不獲取表鎖。但它獲取架構(gòu)鎖,該鎖防止對元數(shù)據(jù)進行更改,但允許更改數(shù)據(jù)。DBCC 語句收集信息,然后掃描任何日志以查找其它所做的任何更改,在掃描的結(jié)尾將兩組信息合并在一起以產(chǎn)生數(shù)據(jù)的一致視圖。
如果指定 TABLOCK 選項,DBCC CHECKFILEGROUP 獲取共享表鎖。這樣可允許某些類別的錯誤有更詳細的錯誤信息,并通過避免使用事務(wù)日志數(shù)據(jù)而將所要求的 tempdb 空間大小降為最低。
DBCC CHECKFILEGROUP 對每個文件組的 text、ntext 和 image 頁的鏈接和大小以及文件組中所有頁的分配進行檢查。
DBCC CHECKFILEGROUP 還對索引視圖執(zhí)行物理一致性檢查。只用于向后兼容性的 NOINDEX 選項也適用于索引視圖。
對于文件組中的每個表,DBCC CHECKFILEGROUP 檢查其:
如果所顯式檢查的文件組中的非聚集索引與其它文件組中的表相關(guān)聯(lián),則也要對其它文件組中的表(最初未顯式檢查)進行檢查,因為要對索引進行驗證也要求對基表結(jié)構(gòu)進行驗證。然而,如果所檢查的文件組中的表在其它文件組中有非聚集索引,則不對該索引進行檢查,因為:
聚集索引和表不可能在不同文件組上,所以這些注意事項只適用于非聚集索引。
對 filegroup 和 filegroup_id 的引用只在當前數(shù)據(jù)庫中有用。執(zhí)行 DBCC CHECKFILEGROUP之前,確保將上下文切換到適當?shù)臄?shù)據(jù)庫。有關(guān)更改當前數(shù)據(jù)庫的更多信息,請參見 USE。
默認情況下,DBCC CHECKFILEGROUP 對對象執(zhí)行并行檢查。并行度由查詢處理器自動確定。最大并行度的配置方式與并行查詢相同。使用 sp_configure 系統(tǒng)存儲過程限制可用于 DBCC 檢查的最大處理器數(shù)。有關(guān)更多信息,請參見 max degree of parallelism 選項。
使用跟蹤標記 2528 可禁用并行檢查。有關(guān)更多信息,請參見跟蹤標記。
不管是否指定任何選項(NOINDEX 除外),如果沒有指定數(shù)據(jù)庫,DBCC CHECKFILEGROUP 將為當前數(shù)據(jù)庫返回以下結(jié)果集(值可能會有變化):
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 將返回以下結(jié)果集:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
如果指定 ESTIMATEONLY 選項,DBCC CHECKFILEGROUP 將返回以下結(jié)果集。
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 權(quán)限默認授予 sysadmin 固定服務(wù)器角色或 db_owner 固定數(shù)據(jù)庫角色的成員且不可轉(zhuǎn)讓。
下例檢查 pubs 數(shù)據(jù)庫主文件組。
USE pubs
GO
DBCC CHECKFILEGROUP
GO
下例通過指定主文件組的標識號和指定 NOINDEX 選項對 pubs 數(shù)據(jù)庫主文件組(不包括非聚集索引)進行檢查。
USE pubs相關(guān)文章
GO
DBCC CHECKFILEGROUP (1, NOINDEX)
GO