SQL Server數(shù)據(jù)庫管理員必備的DBCC命令
一、了解DBCC
DBCC(database consistenecy checker,簡稱dbcc) 是一個(gè)實(shí)用命令集,用來檢查數(shù)據(jù)庫的邏輯一致性及物理一致性。
數(shù)據(jù)庫控制臺(tái)命令語句可分為以下類別:
維護(hù): 對(duì)數(shù)據(jù)庫、索引或文件組進(jìn)行維護(hù)的任務(wù)。
雜項(xiàng): 雜項(xiàng)任務(wù),如啟用跟蹤標(biāo)志或從內(nèi)存中刪除 DLL。
信息: 收集并顯示各種類型信息的任務(wù)。
驗(yàn)證: 對(duì)數(shù)據(jù)庫、表、索引、目錄、文件組或數(shù)據(jù)庫頁的分配進(jìn)行的驗(yàn)證操作
二、DBBCC維護(hù)語句:對(duì)數(shù)據(jù)庫、索引或文件組進(jìn)行維護(hù)的任務(wù)
DBCC CLEANTABLE。回收刪除的可變長度列和文本列的空間。
DBCC CLEANTABLE
(
{ 'database_name' | database_id | 0 }
,{ 'table_name' | table_id | 'view_name' | view_id }
[ , batch_size ]
)
[ WITH NO_INFOMSGS ]
DBCC INDEXDEFRAG。指定表或視圖的索引碎片整理。
DBCC INDEXDEFRAG
(
{ 'database_name' | database_id | 0 }
, { 'table_name' | table_id | 'view_name' | view_id }
, { 'index_name' | index_id }
, { partition_number | 0 }
)
[ WITH NO_INFOMSGS ]
DBCC DBREINDEX。 對(duì)指定數(shù)據(jù)庫中的表重新生成一個(gè)或多個(gè)索引。
DBCC DBREINDEX
(
'table_name'
[ , 'index_name' [ , fillfactor ] ]
)
[ WITH NO_INFOMSGS ]
DBCC SHRINKDATABASE。 收縮指定數(shù)據(jù)庫中的數(shù)據(jù)文件大小。
DBCC SHRINKDATABASE
( 'database_name' | database_id | 0
[ ,target_percent ]
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
[ WITH NO_INFOMSGS ]
DBCC DROPCLEANBUFFERS。 從緩沖池中刪除所有清除緩沖區(qū)。DBCC DROPCLEANBUFFERS [ WITH NO_INFOMSGS ]
DBCC SHRINKFILE。 收縮相關(guān)數(shù)據(jù)庫的指定數(shù)據(jù)文件或日志文件大小。
DBCC SHRINKFILE
(
{ 'file_name' | file_id }
{ [ , EMPTYFILE ]
| [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
}
)
[ WITH NO_INFOMSGS ]
DBCC FREEPROCCACHE。 從過程緩存中刪除所有元素。DBCC FREEPROCCACHE [ WITH NO_INFOMSGS ]
DBCC UPDATEUSAGE 報(bào)告目錄視圖中的頁數(shù)和行數(shù)錯(cuò)誤并進(jìn)行更正。
DBCC UPDATEUSAGE
( { 'database_name' | database_id | 0 }
[ , { 'table_name' | table_id | 'view_name' | view_id }
[ , { 'index_name' | index_id } ] ]
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ]
]
三、DBBCC驗(yàn)證語句:對(duì)數(shù)據(jù)庫、表、索引、目錄、文件組或數(shù)據(jù)庫頁的分配進(jìn)行的驗(yàn)證操作
DBCC CHECKALLOC。檢查指定數(shù)據(jù)庫的磁盤空間分配結(jié)構(gòu)的一致性。
DBCC CHECKALLOC
[
(
[ 'database_name' | database_id | 0 ]
[ , NOINDEX
|
{ REPAIR_ALLOW_DATA_LOSS
| REPAIR_FAST
| REPAIR_REBUILD
} ]
)
]
[ WITH { [ ALL_ERRORMSGS ]
[ , NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
}
]
DBCC CHECKFILEGROUP。檢查當(dāng)前數(shù)據(jù)庫中指定文件組中的所有表的分配和結(jié)構(gòu)完整性。
DBCC CHECKFILEGROUP
[
(
[ { 'filegroup_name' | filegroup_id | 0 } ]
[ , NOINDEX ]
)
]
[ WITH
{
[ ALL_ERRORMSGS ]
[ NO_INFOMSGS ] ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
}
]
DBCC CHECKCATALOG。檢查指定數(shù)據(jù)庫內(nèi)的目錄一致性。數(shù)據(jù)庫必須聯(lián)機(jī)。
DBCC CHECKCATALOG
[
(
'database_name' | database_id | 0
)
]
[ WITH NO_INFOMSGS ]
DBCC CHECKIDENT。 檢查指定表的當(dāng)前標(biāo)識(shí)值,如有必要,則更改標(biāo)識(shí)值。
DBCC CHECKIDENT
(
'table_name'
[ , {
NORESEED | { RESEED [ , new_reseed_value ] }
}
]
)
[ WITH NO_INFOMSGS ]
DBCC CHECKCONSTRAINTS。 檢查當(dāng)前數(shù)據(jù)庫中指定表上的指定約束或所有約束的完整性。
DBCC CHECKCONSTRAINTS
[
(
'table_name' | table_id | 'constraint_name' | constraint_id
)
]
[ WITH
{ ALL_CONSTRAINTS | ALL_ERRORMSGS } [ , NO_INFOMSGS ]
]
DBCC CHECKTABLE。檢查組成表或索引視圖的所有頁和結(jié)構(gòu)的完整性。
DBCC CHECKTABLE
(
'table_name' | 'view_name'
[ , NOINDEX
| index_id
| { REPAIR_ALLOW_DATA_LOSS
| REPAIR_FAST
| REPAIR_REBUILD }
]
)
[ WITH
{ [ ALL_ERRORMSGS ]
[ , [ NO_INFOMSGS ] ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
[ , [ PHYSICAL_ONLY ] ]
}
]
DBCC CHECKDB。檢查指定數(shù)據(jù)庫中所有對(duì)象的分配、結(jié)構(gòu)和邏輯完整性。
DBCC CHECKDB
[
(
'database_name' | database_id | 0
[ , NOINDEX
| { REPAIR_ALLOW_DATA_LOSS
| REPAIR_FAST
| REPAIR_REBUILD
} ]
)
]
[ WITH {
[ ALL_ERRORMSGS ]
[ , [ NO_INFOMSGS ] ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
[ , [ PHYSICAL_ONLY ] ] | [ , [ DATA_PURITY ] ]
}
]
四、DBBCC的信息語句
DBCC SHOW_STATISTICS。顯示指定表上的指定目標(biāo)的當(dāng)前分發(fā)統(tǒng)計(jì)信息。
DBCC INPUTBUFFER.顯示從客戶端發(fā)送到 Microsoft SQL Server 2005 實(shí)例的最后一個(gè)語句。DBCC INPUTBUFFER ( session_id [ , request_id ] ) [WITH NO_INFOMSGS ]
DBCC SHOWCONTIG.顯示指定的表的數(shù)據(jù)和索引的碎片信息。
DBCC SHOWCONTIG
[ (
{ 'table_name' | table_id | 'view_name' | view_id }
[ , 'index_name' | index_id ]
)]
[ WITH
{
[ , [ ALL_INDEXES ] ]
[ , [ TABLERESULTS ] ]
[ , [ FAST ] ]
[ , [ ALL_LEVELS ] ]
[ NO_INFOMSGS ]
}
]
DBCC OPENTDBCC INPUTBUFFERRAN 如果在指定數(shù)據(jù)庫內(nèi)存在最早的活動(dòng)事務(wù)和最早的分布式和非分布式復(fù)制事務(wù),則顯示與之有關(guān)的信息
DBCC OPENTRAN
[
( [ 'database_name' | database_id | 0 ] ) ]
{ [ WITH TABLERESULTS ]
[ , [ NO_INFOMSGS ] ]
}
]
DBCC SQLPERF.提供有關(guān)如何在所有數(shù)據(jù)庫中使用事務(wù)日志空間的統(tǒng)計(jì)信息。
DBCC SQLPERF ( LOGSPACE | 'sys.dm_os_latch_stats' , CLEAR | 'sys.dm_os_wait_stats' , CLEAR )
[WITH NO_INFOMSGS ]
DBCC OUTPUTBUFFER.以十六進(jìn)制和 ASCII 格式返回指定 session_id 的當(dāng)前輸出緩沖區(qū)。DBCC OUTPUTBUFFER ( session_id [ , request_id ] )
DBCC TRACESTATUS.顯示跟蹤標(biāo)志的狀態(tài).DBCC TRACESTATUS ( [ [ trace# [ ,...n ] ] [ , ] [ -1 ] ] )
DBCC PROCCACHE.以表格格式顯示有關(guān)過程緩存的信息。DBCC PROCCACHE [ WITH NO_INFOMSGS ]
DBCC USEROPTIONS 返回當(dāng)前連接的活動(dòng)(設(shè)置)的 SET 選項(xiàng)。DBCC USEROPTIONS
五、DBBCC的雜項(xiàng)語句:雜項(xiàng)任務(wù),如啟用跟蹤標(biāo)志或從內(nèi)存中刪除 DLL
DBCC HELP。返回指定的 DBCC 命令的語法信息。DBCC HELP ( 'dbcc_statement' | @dbcc_statement_var | '?' )[ WITH NO_INFOMSGS ]
DBCC dllname (FREE)。從內(nèi)存中上載指定的擴(kuò)展存儲(chǔ)過程 DLL。DBCC dllname ( FREE ) [ WITH NO_INFOMSGS ]
DBCC DBREPAIR 。禁用指定的跟蹤標(biāo)記。DBCC TRACEOFF ( trace# [ ,...n ] [ , -1 ] ) [ WITH NO_INFOMSGS ]
DBCC TRACEON。啟用指定的跟蹤標(biāo)記。DBCC TRACEON ( trace# [ ,...n ][ , -1 ] ) [ WITH NO_INFOMSGS ]
六、未公開的DBCC
DBCC ERRLOG
初始化SQL錯(cuò)誤日志
DBCC BUFFER
顯示緩沖區(qū)頭部和頁面信息
DBCC FLUSHPROCINDB
清楚數(shù)據(jù)庫服務(wù)器內(nèi)存中的某個(gè)數(shù)據(jù)庫存儲(chǔ)過程的緩存內(nèi)容。
DBCC DBINFO
顯示數(shù)據(jù)庫結(jié)果信息
DBCC DATABLE
顯示管理數(shù)據(jù)庫的表信息
DBC IND
查看某個(gè)索引使用的頁面信息。
DBCC REBULDLOG
重建修復(fù)SQL數(shù)據(jù)庫事物日志文件。
DBCC LOG
查看某個(gè)數(shù)據(jù)庫的事務(wù)日志信息
DBCC PAGE
查看某個(gè)數(shù)據(jù)庫數(shù)據(jù)也面信息
DBCC PROCBUF
顯示過程緩沖池的緩沖區(qū)頭和存儲(chǔ)過程。
DBCC PRTIPAGE
查看某個(gè)索引頁面的每行指向的頁面號(hào)。
DBCC PSS
顯示當(dāng)前連接到SQLSERVER服務(wù)器的進(jìn)程信息。
DBCC RESOURCE
顯示服務(wù)器當(dāng)前使用的資源情況。
DBCC TAB
查看數(shù)據(jù)頁面的結(jié)構(gòu)。
