W systemie zarządzania bazami danych Microsoft SQL Server 2005, podobnie jak w poprzednich wersjach tego systemu, administrator dysponuje ogromnym arsenałem składni i poleceń, spośród których niebagatelną rolę odgrywają polecenia z rodziny DBCC. Niniejszy artykuł pozwoli każdemu administratorowi odkryć ukryte przez twórców systemu składnie DBCC, które mogą znaleźć zastosowanie w pracy z systemem SQL Server.
| Uwaga! |
Firma Microsoft oraz autor artykułu nie odpowiadają w żaden sposób za wszelkie szkody powstałe w wyniku wykorzystania opisywanych w niniejszym artykule nieudokumentowanych poleceń. Wszelkie operacje użytkownik wykonuje na swoją własną odpowiedzialność. |
Polecenia DBCC (ang. DataBase Console Command) istnieją w systemie Microsoft SQL Server odkąd sięgam pamięcią. Znajdują zastosowanie zarówno w codziennych zadaniach administracyjnych (np. DBCC SHRINKFILE – polecenie służące do zmniejszania rozmiaru lub opróżniania wybranego pliku bazy danych), jak również w sytuacjach wyjątkowych lub problematycznych (np. DBCC CHECKDB – polecenie służące do sprawdzania integralności logicznej i fizycznej obiektów w bazie danych).
Na pierwszy rzut oka Microsoft SQL Server 2005 dysponuje ponad trzydziestoma poleceniami DBCC (a przynajmniej opisy tylu poleceń można znaleźć w Books Online, wersja z 17 lipca 2006). Okazuje się jednak, że liczba poleceń tego typu jest o wiele większa – jest ich dokładnie 109. Zdecydowana większość tych poleceń jest zatem nieudokumentowana przez firmę Microsoft. Dzieje się tak dlatego, że polecenia DBCC są wewnętrznymi poleceniami systemu SQL Server, wykorzystywanymi między innymi przez systemowe procedury składowane. Wykorzystywanie tych poleceń w sposób bezpośredni w środowiskach produkcyjnych niesie za sobą ryzyko utraty stabilności systemu lub stworzenia problemów, których usunięcie nie jest wspierane przez producenta systemu. Dlatego na samym początku pragnę wyraźnie zaznaczyć, że samo testowanie jakichkolwiek nieudokumentowanych - lub oznaczonych w oficjalnej dokumentacji jako „not supported” („nie wspierane”) - składni powinno odbywać się w dedykowanych środowiskach deweloperskich lub testowych (dobrym rozwiązaniem do tego celu jest też wykorzystanie wirtualizacji i programów, takich jak Microsoft Virtual Server 2005 R2).
Z uwagi na ilość nieudokumentowanych składni DBCC, w artykule nie znajdziesz opisu każdego z tych poleceń, a jedynie kilku z nich. Wybrałem te składnie, które udało mi się dotąd zastosować w środowiskach testowych i dla których znajduję zastosowania w różnych sytuacjach.
W systemie Microsoft SQL Server dostępne jest polecenie DBCC HELP, które pozwala wyświetlić pomoc (skrótowy opis składni) do wybranego polecenia DBCC lub listę wszystkich poleceń z tej rodziny. Jednak domyślnie polecenie DBCC HELP zwróci pomoc jedynie do tych poleceń, których opis znajduje się w oficjalnej dokumentacji systemu. Poniższy fragment kodu ilustruje, w jaki sposób można wyświetlić listę dostępnych poleceń DBCC oraz opis składni wybranego polecenia (w tym przypadku DBCC SQLPERF).
DBCC HELP('?')
DBCC HELP('SQLPERF')
Aby uzyskać dostęp do nieudokumentowanych poleceń DBCC, należy ustawić na poziomie sesji (sugerowane) lub serwera flagę 2588. Opisu tej flagi, podobnie jak opisu większości zaimplementowanych flag, nie znajdziesz w dokumentacji systemu. Poniższy fragment kodu pokazuje, w jaki sposób ustawić wspomnianą flagę na poziomie sesji.
DBCC TRACEON(2588)
Po ustawieniu flagi 2588 polecenie DBCC HELP działa również z nieudokumentowanymi poleceniami DBCC - to znaczy dołącza te polecenia do ogólnej listy dostępnych poleceń DBCC oraz pozwala uzyskać mini pomoc na temat każdego z tych poleceń. W materiałach dołączonych do artykułu znajdziesz skrypt, umożliwiający wygenerowanie pełnej listy opisów składni poleceń DBCC.
Nieudokumentowane flagi, podobnie jak nieudokumentowane polecenia DBCC, służą twórcom i testerom systemu Microsoft SQL Server do testowania różnych funkcjonalności systemu (często nie wspieranych w środowiskach produkcyjnych – przykładem jest flaga 1400 służąca do włączania obsługi funkcjonalności Database Mirroring w systemie Microsoft SQL Server 2005 bez zainstalowanego dodatku Service Pack 1), dokonywania wewnętrznych (często zaawansowanych) ustawień oraz zwracania pewnych (również najczęściej bardzo zaawansowanych i przy tym niepotrzebnych w codziennej administracji) informacji na temat działania systemu i baz danych.
Zgodnie z oczekiwaniami, w porównaniu z poprzednią wersją systemu, Microsoft SQL Server 2005 dysponuje nieco inną gamą poleceń DBCC. Niektóre polecenia zostały całkowicie usunięte z systemu, inne można w systemie znaleźć, ale nie mają żadnego wpływu na system (nie działają z nową wersją systemu), jeszcze inne mają zmienioną składnię. Te ostatnie znajdziesz na liście w Dodatku A na końcu niniejszego artykułu.
W systemie Microsoft SQL Server 2000 odpowiednikiem wspomnianej w artykule flagi 2588 z najnowszej wersji systemu jest flaga 2520. A zatem, by włączyć obsługę nieudokumentowanych poleceń DBCC przez polecenie DBCC HELP, w poprzedniej wersji systemu należy wykonać następujący fragment kodu:
DBCC TRACEON(2520)
Jeśli używałeś lub nadal używasz poleceń DBCC w systemie Microsoft SQL Server 2000, musisz wiedzieć, że wiele spośród tych poleceń zostało usuniętych z najnowszej wersji systemu. W SQL Server 2005 nie znajdziesz poniższych poleceń DBCC (jeśli używałeś któregokolwiek z poniższych poleceń, musisz zmodyfikować swoje skrypty, by można je było wykorzystać w systemie SQL Server 2005):
DBCC ADDUSEROBJECT DBCC BALANCEFACTOR DBCC BUFCOUNT DBCC CHECKDBTS DBCC DES DBCC DROPUSEROBJECT DBCC GETVALUE DBCC IOTRACE DBCC LOCKOBJECTSCHEMA DBCC MATVIEW DBCC MEMOSPY DBCC MEMUSAGE DBCC MONITOREVENTS DBCC NEWALLOC DBCC PERFLOG DBCC PGLINKAGE DBCC PROCBUF DBCC PSS DBCC REBUILD_LOG DBCC ROW_LOCK DBCC SHRINKDB DBCC TAB DBCC TAPE_CONTROL DBCC TEXTALL DBCC TEXTALLOC DBCC UPGRADEDB DBCC USAGEGOVERNOR DBCC WAKEUP
Niektóre polecenia DBCC z poprzedniej wersji systemu doczekały się swoich zamienników w nowej wersji. Stało się tak głównie za sprawą pojawienia się nowych składni języka Transact-SQL oraz nowych klas obiektów w bazach danych.
Pierwszym poleceniem, które jest dostępne w systemie SQL Server 2005, ale istnieje już dla niego zamiennik zalecany przez firmę Microsoft, jest polecenie DBCC SHOWCONTIG. W SQL Server 2000 polecenie to służy do wykrywania fragmentacji indeksów (fragmentacja jest zjawiskiem nie zawsze korzystnym, ponieważ ze wzrostem fragmentacji danych, rośnie ilość stron, jaką musi przeszukiwać system w czasie wykonywania zapytań). W SQL Server 2005 zamiennikiem dla tego polecenia jest dynamiczna funkcja sys.dm_db_index_physical_stats. Przykład użycia tej funkcji prezentuje poniższy fragment kodu (dokładny opis funkcji znajdziesz w Books Online).
USE AdventureWorks
GO
SELECT * FROM sys.dm_db_index_physical_stats(
db_id('AdventureWorks'),
object_id('HumanResources.Department'),
NULL,NULL,DEFAULT)
Niewątpliwą zaletą funkcji sys.dm_db_index_physical_stats w porównaniu z poleceniem DBCC SHOWCONTIG jest większa czytelność wyniku. Odczytując kolumnę avg_fragmentation_in_percent można podjąć decyzję, czy i jak dokonać defragmentacji.
Po wykryciu za pomocą funkcji sys.dm_db_index_physical_stats stopnia fragmentacji indeksów można przystąpić do procesu defragmentacji.
Do defragmentacji indeksów w systemie SQL Server 2000 wykorzystywane były polecenia DBCC INDEXDEFRAG oraz DBCC DBREINDEX. W SQL Server 2005 pojawiło się nowe polecenie, które zastępuje oba wspomniane polecenia DBCC i dodatkowo powoduje, że składnie języka Transact-SQL są bardziej ujednolicone i czytelne. Poleceniem tym jest ALTER INDEX. Polecenie to może być wykonane z opcjami REORGANIZE oraz REBUILD. Opcja REORGANIZE służy do defragmentacji (reorganizacji) indeksów, czyli jest zamiennikiem dla polecenia DBCC INDEXDEFRAG. Poniższy fragment kodu jest przykładem użycia składni ALTER INDEX...REORGANIZE.
ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department REORGANIZE
Z kolei opcja REBUILD zastępuje polecenie DBCC DBREINDEX i służy do przebudowy indeksu (usunięcia i stworzenia indeksu na nowo z takimi samymi ustawieniami). Firma Microsoft zaleca, by stosować tę opcję dla indeksów, których procentowa fragmentacja przekracza 30%. Poniższy fragment kodu jest przykładem użycia składni ALTER INDEX...REBUILD.
ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department REBUILD
Obie operacje – reorganizacja i przebudowa indeksów – w systemie SQL Server 2005 mogą być wykonywane na pojedynczych partycjach (edycje Enterprise i Developer). Ponadto operacja przebudowy indeksów w edycji Enterprise może być wykonywana online (tzn. tabela, na której jest założony przebudowywany indeks, będzie dostępna dla użytkowników w trakcie przebudowy indeksu). Operacja reorganizacji jest zawsze wykonywana online.
Poniższa tabela przedstawia polecenia DBCC, które albo nie działają, albo mają zamienniki w systemie SQL Server 2005.
| Polecenie DBCC | Zamiennik / komentarz |
DBCC DBREPAIR | DROP DATABASE |
DBCC NEWALLOC | DBCC CHECKALLOC |
DBCC PINTABLE | Polecenia nie mają żadnego wpływu na działanie systemu. |
DBCC TEXTALL | DBCC CHECKDB |
Czas na przykłady nieudokumentowanych poleceń DBCC. Wybrałem zaledwie pięć poleceń spośród kilkudziesięciu. Zastosowania dla tych poleceń znalazłem zarówno w rozwiązywaniu rzeczywistych problemów, jak i na potrzeby szkoleniowe.
DBCC IND
Opis: wyświetla tabelę - listę stron używanych przez indeksy założone na określonej tabeli.
Zastosowanie: edukacja, precyzyjne określanie położenia danych w plikach.
Składnia: dbcc ind ( { 'dbname' | dbid }, { 'objname' | objid }, { indid | 1 | 0 | -1 | -2 } [, partition_number] )
Komentarz: trzecim argumentem jest ID indeksu (0 – sterta, 1 – indeks clustered, 2 lub więcej – indeks nonclustered); -1 i -2 to specjalne opcje – użycie pierwszej powoduje wyświetlenie informacji o wszystkich indeksach, użycie drugiej powoduje wyświetlenie tylko rekordów dotyczących stron IAM (ang. Index Allocation Map) dla wszystkich indeksów.
Przykład użycia:
DBCC IND(N'AdventureWorks',N'HumanResources.Department',-1)
DBCC PAGE
Opis: wyświetla wydruk ilustrujący strukturę wybranej strony danych.
Zastosowanie: edukacja, precyzyjne określanie położenia danych na stronach danych.
Składnia: dbcc page ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])
Komentarz: czwartym argumentem jest styl wyświetlania – determinuje ilość wyświetlanych detali; przed użyciem polecenia DBCC PAGE niezbędne jest włączenie flagi 3604.
Przykład użycia:
DECLARE @dbid int SET @dbid = DB_ID(N'AdventureWorks') DBCC TRACEON(3604) DBCC PAGE(@dbid,1,4301,1)
DBCC FLUSHPROCINDB
Opis: usuwa zawartość cache’u procedur dla wybranej bazy danych.
Zastosowanie: opróżnianie cache’u w czasie testów wydajnośćiowych zapytań i procedur składowanych (polecenie jest szczególnie przydatne, gdy jednocześnie na jednej instancji pracuje wiele osób w wielu bazach danych i zależy nam na tym, by nie czyścić cache’u wszystkich baz naraz).
Składnia: dbcc flushprocindb (dbid)
Komentarz: polecenie może być używane w środowiskach testowych jako zamiennik dla polecenia DBCC FREEPROCCACHE.
Przykład użycia:
DECLARE @dbid int
SET @dbid = DB_ID('AdventureWorks')
DBCC FLUSHPROCINDB(@dbid)
USE AdventureWorks
GO
SELECT sql FROM sys.syscacheobjects
WHERE dbid = @dbid
DBCC LOG
Opis: wyświetla zawartość dziennika transakcji (lub jego fragmentu) dla wybranej bazy danych.
Zastosowanie: edukacja, przeglądanie rodzajów i czasów wykonania operacji w bazie danych.
Składnia: dbcc log (dbname | dbid [,{0|1|2|3|4}[,['lsn','[0x]x:y:z']| ['numrecs',num]|['xdesid','x:y']|['extent','x:y']|['pageid','x:y']| ['objid',{x,'y'}]|['logrecs',{'lop'|op}...]|['output',x, ['filename','x']]...]]])
Komentarz: polecenie nie wyświetla składni Transact-SQL wykonywanych poleceń.
Przykład użycia:
DBCC LOG(N'AdventureWorks',3)
DBCC LOGINFO
Opis: wyświetla listę wirtualnych plików dziennika transakcji (VLF – ang. Virtual Log File) wybranej bazy danych.
Zastosowanie: edukacja, wykrywanie statusu wirtualnych plików dziennika transakcji.
Składnia: dbcc loginfo [({'dbname' | dbid})]
Komentarz: wynikowa kolumna Status pokazuje, czy dany wirtualny plik jest aktywny (Status=2), czy nie (Status=0); cykliczny zapis transakcji może nastąpić jedynie do nieaktywnego pliku wirtualnego; brak nieaktywnego pliku wirtualnego niesie za sobą powiększenie pliku dziennika transakcji albo wstrzymanie możliwości zapisu do bazy danych (jeśli plik dziennika transakcji osiągnął maksymalny rozmiar lub nie ustawiono opcji automatycznego powiększania pliku dziennika transakcji).
Przykład użycia:
DBCC LOGINFO(N'AdventureWorks')
Nieudokumentowane polecenia DBCC otwierają nowe możliwości lepszego poznania działania systemu Microsoft SQL Server 2005. Niewykluczone, że użyjesz niektórych z tych poleceń w środowiskach testowych, by uzyskać informacje, których nie da się zwrócić przy użyciu opisanych w dokumentacji składni lub by przetestować różnego rodzaju specyficzne zachowania systemu. Powtórzę jednak, że nie powinieneś używać tych poleceń w środowiskach produkcyjnych. Jeśli użyciem nieudokumentownego polecenia spowodujesz niestabilne działanie lub nawet awarię systemu, nie licz na to, że pracownicy wsparcia technicznego firmy Microsoft rozwiążą Twój problem. Nie są w żaden sposób do tego zobligowani. A więc jeszcze raz powtarzam – ostrożnie z tym, co domyślnie producent ukrywa przed użytkownikiem, ponieważ nigdy ukrywanie to nie jest bezcelowe i najczęściej ma po prostu chronić użytkownika nim samym. I na koniec – powodzenia w odkrywaniu funkcjonalności oferowanych przez nieudokumentowane polecenia DBCC! Może właśnie Ty opiszesz któreś z nich w innym artykule dla polskiej strony TechNet!?
Wszystkie wymienione w artykule (nie licząc dodatku) fragmenty kodu były testowane na systemie Microsoft SQL Server 2005 Developer Edition z dodatkiem SP2CTP (wersja systemu 9.00.3027). |
Poniżej prezentuję listę poleceń DBCC, jakie są dostępne w systemie Microsoft SQL Server 2005. Polecenia zostały podzielone na następujące kategorie:
Udokumentowane polecenie DBCC, istniało w poprzedniej wersji systemu, składnia nie uległa zmianie*:
DBCC CHECKIDENT DBCC CLEANTABLE DBCC CONCURRENCYVIOLATION DBCC DBREINDEX DBCC DROPCLEANBUFFERS DBCC FREE DBCC FREEPROCCACHE DBCC HELP DBCC OPENTRAN DBCC PINTABLE DBCC PROCCACHE DBCC SHOWCONTIG DBCC SHRINKDATABASE DBCC SHRINKFILE DBCC SQLPERF DBCC TRACEOFF DBCC TRACEON DBCC TRACESTATUS DBCC UNPINTABLE DBCC UPDATEUSAGE DBCC USEROPTIONS
Udokumentowane polecenie DBCC, istniało w poprzedniej wersji systemu, składnia uległa zmianie:
DBCC CHECKALLOC DBCC CHECKCATALOG DBCC CHECKCONSTRAINTS DBCC CHECKDB DBCC CHECKFILEGROUP DBCC CHECKTABLE DBCC DBREPAIR DBCC INDEXDEFRAG DBCC INPUTBUFFER DBCC OUTPUTBUFFER DBCC SHOW_STATISTICS
Udokumentowane polecenie DBCC, nie istniało w poprzedniej wersji systemu:
DBCC FREESESSIONCACHE DBCC FREESYSTEMCACHE
Nieudokumentowane polecenie DBCC, istniało w poprzedniej wersji systemu, składnia nie uległa zmianie:
DBCC ACTIVECURSORS DBCC ADDEXTENDEDPROC DBCC ADDINSTANCE DBCC BUFFER DBCC BYTES DBCC CACHESTATS DBCC CALLFULLTEXT DBCC CHECKPRIMARYFILE DBCC COLLECTSTATS DBCC CONFIG DBCC CURSORSTATS DBCC DBINFO DBCC DBRECOVER DBCC DBTABLE DBCC DEBUGBREAK DBCC DELETEINSTANCE DBCC DROPEXTENDEDPROC DBCC DUMPTRIGGER DBCC ERRORLOG DBCC FILEHEADER DBCC FLUSHPROCINDB DBCC ICECAPQUERY DBCC INCREMENTINSTANCE DBCC INVALIDATE_TEXTPTR DBCC INVALIDATE_TEXTPTR_OBJID DBCC LATCH DBCC LOCK DBCC LOGINFO DBCC MEMOBJLIST DBCC MEMORYMAP DBCC MEMORYSTATUS DBCC NO_TEXTPTR DBCC PERFMON DBCC READPAGE DBCC RENAMECOLUMN DBCC RESOURCE DBCC RULEOFF DBCC RULEON DBCC SETCPUWEIGHT DBCC SETINSTANCE DBCC SETIOWEIGHT DBCC SHOWDBAFFINITY DBCC SHOWFILESTATS DBCC SHOWOFFRULES DBCC SHOWONRULES DBCC SHOWWEIGHTS DBCC SQLMGRSTATS DBCC THAW_IO DBCC USEPLAN DBCC WRITEPAGE
Nieudokumentowane polecenie DBCC, istniało w poprzedniej wersji systemu, składnia uległa zmianie:
DBCC AUDITEVENT DBCC AUTOPILOT DBCC CLEARSPACECACHES DBCC DBREINDEXALL DBCC DETACHDB DBCC EXTENTINFO DBCC FIXALLOCATION DBCC FLUSH DBCC FREEZE_IO DBCC IND DBCC LOG DBCC PAGE DBCC PRTIPAGE DBCC SHOWTABLEAFFINITY DBCC SHOWTEXT DBCC STACKDUMP DBCC TEC
Nieudokumentowane polecenie DBCC, nie istniało w poprzedniej wersji systemu:
DBCC CACHEPROFILE DBCC FORCEGHOSTCLEANUP DBCC MAPALLOCUNIT DBCC METADATA DBCC MOVEPAGE DBCC OPTIMIZER_WHATIF DBCC PERSISTSTACKHASH DBCC SEMETADATA
* Pojawienie się lub brak opcji NO_INFOMSGS w opisie polecenia nie jest traktowane jako zmiana składni.
Pomoc dla poleceń DBCC w SQL Server 2005
dbcc activecursors [(spid)]
dbcc addextendedproc (function_name, dll_name)
dbcc addinstance (objectname, instancename)
dbcc auditevent (eventclass, eventsubclass, success, loginname, rolename, dbusername, loginid, objname, _
_ servername, providername)
dbcc autopilot (typeid [, dbid [, {maxQueryCost | tabid [, indid [, pages [, flag [, rowcounts]]]]} ]])
dbcc buffer ( {'dbname' | dbid} [, objid [, number [, printopt={0|1|2} ][, dirty | io | kept | rlock | _
_ ioerr | hashed ]]])
dbcc bytes ( startaddress, length )
dbcc cacheprofile ( actionid [, bucketid])
dbcc cachestats
dbcc callfulltext - system sp use only
dbcc checkalloc
(
[ { 'database_name' | database_id | 0 } ]
[ , NOINDEX |
{ REPAIR_ALLOW_DATA_LOSS
| REPAIR_FAST
| REPAIR_REBUILD
} ]
)
[ WITH
{
[ ALL_ERRORMSGS ]
[ , [ NO_INFOMSGS ] ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
}
]
dbcc checkcatalog
[
( { 'database_name' | database_id | 0 } )
]
[ WITH NO_INFOMSGS ]
dbcc checkconstraints
[
( { 'table_name' | table_id | 'constraint_name' | constraint_id } )
]
[ WITH
{ ALL_CONSTRAINTS | ALL_ERRORMSGS }
[ , [ NO_INFOMSGS ] ]
]
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 ] ]
}
]
dbcc checkfilegroup
(
[ { 'filegroup_name' | filegroup_id | 0 } ]
[ , NOINDEX ]
)
[ WITH
{
[ ALL_ERRORMSGS ]
[ , [ NO_INFOMSGS ] ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
}
]
dbcc checkident
(
'table_name'
[ , { NORESEED
| { RESEED [ , new_reseed_value ] }
} ]
)
[ WITH NO_INFOMSGS ]
dbcc checkprimaryfile ( {'FileName'} [, opt={0|1|2|3} ])
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 cleantable
(
{ 'database_name' | database_id | 0 }
, { 'table_name' | table_id | 'view_name' | view_id }
[ , batch_size ]
)
[ WITH NO_INFOMSGS ]
dbcc clearspacecaches ('dbname'|dbid, 'table_name'|table_id, 'index_name'|index_id [, partition_number])
dbcc collectstats (on | off)
dbcc concurrencyviolation ( reset | display | startlog | stoplog )
dbcc config
dbcc cursorstats ([spid [,'clear']])
dbcc dbinfo [('dbname')]
dbcc dbrecover (dbname [, IgnoreErrors])
dbcc dbreindex
(
'table_name'
[ , 'index_name' [ , fillfactor ] ]
)
[ WITH NO_INFOMSGS ]
dbcc dbreindexall (dbname|dbid[, type_bitmap])
dbcc dbrepair ('dbname', markdirty | {dropdevice, int} | {repairindex, int, int})
dbcc dbtable [({'dbname' | dbid})]
dbcc debugbreak
dbcc deleteinstance (objectname, instancename)
dbcc detachdb ( 'dbname' [, fKeep_Fulltext_Index_File (0 | 1)] )
dbcc dropcleanbuffers [ WITH NO_INFOMSGS ]
dbcc dropextendedproc (function_name)
dbcc dumptrigger ({'BREAK', {0 | 1}} | 'DISPLAY' | {'SET', exception_number} | {'CLEAR', exception_number})
dbcc errorlog
dbcc extentinfo [({'dbname'| dbid | 0} [, {'tablename' | tableid} [, {'indexname' | indexid | -1} _
_ [, partition_number]]])]
dbcc fileheader [( {'dbname' | dbid} [, fileid])
dbcc fixallocation [({'ADD' | 'REMOVE'}, {'PAGE' | 'SINGLEPAGE' | 'EXTENT' | 'MIXEDEXTENT'}, filenum, _
_ pagenum [, objectid, indexid, partitionid, allocUnitId])
dbcc flush ('data' | 'log', dbname | dbid)
dbcc flushprocindb (dbid)
dbcc forceghostcleanup [({'dbname' | dbid})]
dbcc dll_name( FREE ) [ WITH NO_INFOMSGS ]
e.g. dbcc xp_sample( FREE )
dbcc freeproccache [ WITH NO_INFOMSGS ]
dbcc freesessioncache
dbcc freesystemcache
(
'ALL'
)
[ WITH
{
[ MARK_IN_USE_FOR_REMOVAL ]
[, [ NO_INFOMSGS ] ]
}
]
dbcc freeze_io (dbname | dbid)
dbcc help
(
{ 'dbcc_statement' | @dbcc_statement_var | '?' }
)
[ WITH NO_INFOMSGS ]
dbcc icecapquery ('dbname' [, stored_proc_name [, #_times_to_icecap (-1 infinite, 0 turns off)]])
Use 'dbcc icecapquery (printlist)' to see list of SP's to profile.
Use 'dbcc icecapquery (icecapall)' to profile all SP's.
dbcc incrementinstance (objectname, countername, instancename, value)
dbcc ind ( { 'dbname' | dbid }, { 'objname' | objid }, { nonclustered indid | 1 | 0 | -1 | -2 } _
_ [, partition_number] )
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 inputbuffer
(
session_id [ , request_id ]
)
[WITH NO_INFOMSGS ]
dbcc invalidate_textptr (textptr)
dbcc invalidate_textptr_objid (objid)
dbcc latch ( address [, 'owners'] [, 'stackdumps'])
dbcc lock ([{'DUMPTABLE' | 'DUMPSTATS' | 'RESETSTATS' | 'HASH'}]|[{'STALLREPORTTHESHOLD', stallthreshold}])
dbcc log (dbname | dbid [,{0|1|2|3|4}[,['lsn','[0x]x:y:z']|['numrecs',num]|['xdesid','x:y']| _
_ ['extent','x:y']|['pageid','x:y']|['objid',{x,'y'}]|['logrecs',{'lop'|op}...]|['output',x, _
_ ['filename','x']]...]]])
dbcc loginfo [({'dbname' | dbid})]
dbcc mapallocunit (I8AllocUnitId | {I4part, I2part})
dbcc memobjlist [(memory object)]
dbcc memorymap
dbcc memorystatus
dbcc metadata ({'print' [, printopt = {0 |1}] | 'drop' | 'clone' [, '<NewObjectName>' | ....]}, {'object' _
_ [, 'type',...}, {Id | Name}, [{Ownerid | Ownername}], [{Dbid | Dbname}]])
dbcc movepage ( {'dbname' | dbid}, src_filenum, src_pagenum [, des_filenum [, des_pagenum
_ [, des_pagenum2]]]) [WITH NO_INFOMSGS]
dbcc no_textptr (table_id , max_inline)
dbcc opentran
[
( [ { 'database_name' | database_id | 0 } ] )
]
[ WITH
{
[ TABLERESULTS ]
[ , [ NO_INFOMSGS ]
}
]
dbcc optimizer_whatif property, value
dbcc outputbuffer
(
session_id [ , request_id ]
)
[ WITH NO_INFOMSGS ]
dbcc page ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])
dbcc perfmon
dbcc persiststackhash (input_hashfile, BUFLATCH_TIMEOUT | ATTENTION | OUTOFLOCKS | LATCH_ATTN | _
_ OUTOFLOG | OUTOFMEM | SOS | NO_BUFFS [, SKIPLAST | INCLUDELAST] [,output_hashfile])
dbcc pintable (database_id, table_id)
dbcc proccache [ WITH NO_INFOMSGS ]
dbcc prtipage (dbname | dbid, objid | objname, indexid | indexname [, partition_number [, level]]). _
_ No partition specified uses the first partition. No level specified prints root page.
dbcc readpage ({'dbname'|dbid}, fileid, pageid, formatstr [, printopt = { 0 | 1} ])
dbcc renamecolumn (object_name, old_name, new_name)
dbcc resource
dbcc ruleoff ({ rulenum | rulestring } [, { rulenum | rulestring } ]+)
dbcc ruleon ( rulenum | rulestring } [, { rulenum | rulestring } ]+)
dbcc semetadata (object id | name, index id | name [, partition id])
dbcc setcpuweight (weight)
dbcc setinstance (objectname, countername, instancename, value)
dbcc setioweight (weight)
dbcc show_statistics
(
{ 'table_name' | 'view_name' }
, target
)
[ WITH
{
[ NO_INFOMSGS ]
< option > [ , n ]
}
]
< option > ::=
STAT_HEADER | DENSITY_VECTOR | HISTOGRAM
dbcc showcontig
[ (
{ 'table_name' | table_id | 'view_name' | view_id }
[ , { 'index_name' | index_id } ]
) ]
[ WITH
{
[ ALL_INDEXES
| FAST [ , ALL_INDEXES ]
| TABLERESULTS [ , { ALL_INDEXES } ] ]
[ , { FAST | ALL_LEVELS } ]
[ , NO_INFOMSGS ]
}
]
dbcc showdbaffinity
dbcc showfilestats [(file_num)]
dbcc showoffrules
dbcc showonrules
dbcc showtableaffinity (table_id | table_name [, partition_number])
dbcc showtext ('dbname' | dbid, {textpointer | {fileid, pageid, slotid [,option]}})
dbcc showweights
dbcc shrinkdatabase
(
{ 'database_name' | database_id | 0 }
[ , target_percent ]
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
[ WITH NO_INFOMSGS ]
dbcc shrinkfile
(
{ 'file_name' | file_id }
{
[ , EMPTYFILE]
| [ [, target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
}
)
[ WITH NO_INFOMSGS ]
dbcc sqlmgrstats
dbcc sqlperf ( LOGSPACE ) [ WITH NO_INFOMSGS ]
({IOSTATS | LRUSTATS | NETSTATS | RASTATS [, CLEAR]} | {THREADS} | {LOGSPACE})
dbcc stackdump [( ['dump description',] {{uid[, spid [, batchid [, ecid]]} | {threadId, 'THREADID'}]} )]
dbcc tec [( uid[, spid[, batchid[, ecid]] )]
dbcc thaw_io (dbname | dbid)
dbcc traceoff
(
trace# [ , ...n ] [, -1]
)
[ WITH NO_INFOMSGS ]
dbcc traceon
(
trace# [ , ...n ] [, -1]
)
[ WITH NO_INFOMSGS ]
dbcc tracestatus
(
[ [ trace# [ , ...n ] ] [ , -1 ] ]
)
[ WITH NO_INFOMSGS ]
dbcc unpintable (dbid, table_id)
dbcc updateusage
(
{ 'database_name' | database_id | 0 }
[ , { 'table_name' | 'view_name' | object_id }
[ , { 'index_name' | index_id } ] ]
)
[ WITH
{
[ NO_INFOMSGS ]
[ , [ COUNT_ROWS ] ]
}
]
dbcc useplan [(number_of_plan)]
dbcc useroptions [ WITH NO_INFOMSGS ]
dbcc writepage ({'dbname' | dbid}, fileid, pageid, offset, length, data)
Pomoc dla poleceń DBCC w SQL Server 2000
activecursors [(spid)]
addextendedproc (function_name, dll_name)
addinstance (objectname, instancename)
adduserobject (name)
auditevent (eventclass, eventsubclass, success, loginname, rolename, dbusername, loginid)
autopilot (typeid, dbid, tabid, indid, pages [,flag])
balancefactor (variance_percent)
bufcount [(number_of_buffers)]
buffer ( {'dbname' | dbid} [, objid [, number [, printopt={0|1|2} ][, dirty | io | kept | rlock | ioerr | _
_ hashed ]]])
bytes ( startaddress, length )
cachestats
callfulltext - system sp use only
checkalloc [('database_name'[, NOINDEX | REPAIR])] [WITH NO_INFOMSGS[, ALL_ERRORMSGS][, ESTIMATEONLY]]
Repair Options - REPAIR_ALLOW_DATA_LOSS (default) | REPAIR_REBUILD | REPAIR_FAST
checkcatalog [('database_name')] [WITH NO_INFOMSGS]
checkconstraints [( 'tab_name' | tab_id | 'constraint_name' | constraint_id )] [WITH ALL_CONSTRAINTS | _
_ ALL_ERRORMSGS]
checkdb [('database_name'[, NOINDEX | REPAIR])] [WITH NO_INFOMSGS[, ALL_ERRORMSGS][, PHYSICAL_ONLY] _
_ [, ESTIMATEONLY][, TABLOCK]]
Repair Options - REPAIR_ALLOW_DATA_LOSS (default) | REPAIR_REBUILD | REPAIR_FAST
checkdbts (dbid, newTimestamp)
checkfilegroup [( [ {'filegroup_name' | filegroup_id} ] [, NOINDEX] )] [WITH NO_INFOMSGS[, ALL_ERRORMSGS] _
_ [, PHYSICAL_ONLY][, ESTIMATEONLY][, TABLOCK]]
checkident ('table_name'[, { NORESEED | {RESEED [, new_reseed_value] } } ] )
checkprimaryfile ( {'FileName'} [, opt={0|1|2|3} ])
checktable ('table_name'[, {NOINDEX | index_id | REPAIR}]) [WITH NO_INFOMSGS[, ALL_ERRORMSGS] _
_ [, PHYSICAL_ONLY][, ESTIMATEONLY][, TABLOCK]]
Repair Options - REPAIR_ALLOW_DATA_LOSS (default) | REPAIR_REBUILD | REPAIR_FAST
cleantable ('database_name'|database_id, 'table_name'|table_id, [batch_size])
cacheprofile [( {actionid} [, bucketid])
clearspacecaches ('database_name'|database_id, 'table_name'|table_id, 'index_name'|index_id)
collectstats (on | off)
concurrencyviolation (reset | display | startlog | stoplog)
config
cursorstats ([spid [,'clear']])
dbinfo [('dbname')]
dbrecover (dbname [, IgnoreErrors])
dbreindex ('table_name' [, index_name [, fillfactor ]]) [WITH NO_INFOMSGS]
dbreindexall (db_name/db_id, type_bitmap)
dbrepair ('dbname', DROPDB [, NOINIT])
DROP DATABASE is the preferred method of dropping a damaged database.
('dbname', readpage | writepage | repairindex | syscatfix | markdirty | dropdevice, int, int)
dbtable [({'dbname' | dbid})]
debugbreak
deleteinstance (objectname, instancename)
des [( {'dbname' | dbid} [, {'objname' | objid} ])]
detachdb [( 'dbname' )]
dropcleanbuffers
dropextendedproc (function_name)
dropuserobject ('object_name')
dumptrigger ({'BREAK', {0 | 1}} | 'DISPLAY' | {'SET', exception_number} | {'CLEAR', exception_number})
errorlog
extentinfo [({'database_name'| dbid | 0} [, {'table_name' | table_id} [, {'index_name' | index_id | -1}]])]
fileheader [( {'dbname' | dbid} [, fileid])
fixallocation [({'ADD' | 'REMOVE'}, {'PAGE' | 'SINGLEPAGE' | 'EXTENT' | 'MIXEDEXTENT'}, filenum, pagenum _
_ [, objectid, indid])
flush ('data' | 'log', dbid)
flushprocindb (database)
free dll_name (FREE)
e.g. DBCC xp_sample (FREE)
freeproccache
freeze_io (db)
getvalue (name)
help ('dbcc_command' | '?')
icecapquery ('dbname', stored_proc_name [, #_times_to_icecap (-1 infinite, 0 turns off)])
Use 'dbcc icecapquery (printlist)' to see list of SP's to profile.
Use 'dbcc icecapquery (icecapall)' to profile all SP's.
incrementinstance (objectname, countername, instancename, value)
ind ( { 'dbname' | dbid }, { 'objname' | objid }, { indid | 0 | -1 | -2 } )
indexdefrag ({dbid | dbname | 0}, {tableid | tablename}, {indid | indname})
inputbuffer (spid)
invalidate_textptr (textptr)
invalidate_textptr_objid (objid)
iotrace ( { 'dbname' | dbid | 0 | -1 }, { fileid | 0 }, bufsize, [ { numIOs | -1 } [, { timeout (sec) _
_| -1 } [, printopt={ 0 | 1 }]]] )
latch ( address [, 'owners'] [, 'stackdumps'])
lock ([{'DUMPTABLE' | 'DUMPSTATS' | 'RESETSTATS' | 'HASH'}]|[{'STALLREPORTTHESHOLD', stallthreshold}])
lockobjectschema ('object_name')
log ([dbid[,{0|1|2|3|4}[,['lsn','[0x]x:y:z']|['numrecs',num]|['xdesid','x:y']|['extent','x:y']| _
_ ['pageid','x:y']|['objid',{x,'y'}]|['logrecs',{'lop'|op}...]|['output',x,['filename','x']]...]]])
loginfo [({'database_name' | dbid})]
memobjlist [(memory object)]
memorymap
memorystatus
memospy
memusage ([IDS | NAMES], [Number of rows to output])
monitorevents ('sink' [, 'filter-expression'])
newalloc - please use checkalloc instead
no_textptr (table_id , max_inline)
opentran [({'dbname'| dbid})] [WITH TABLERESULTS[,NO_INFOMSGS]]
outputbuffer (spid)
page ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ][, cache={0|1} ])
perflog
perfmon
pglinkage (dbid, startfile, startpg, number, printopt={0|1|2}, targetfile, targetpg, order={1|0})
pintable (database_id, table_id)
procbuf [({'dbname' | dbid}[, {'objname' | objid}[, nbufs[, printopt = { 0 | 1 } ]]] )]
proccache
prtipage (dbid, objid, indexid [, [{{level, 0} | {filenum, pagenum}}] [,printopt]])
pss [(uid[, spid[, printopt = { 1 | 0 }]] )]
readpage ({ dbid, 'dbname' }, fileid, pageid, formatstr [, printopt = { 0 | 1} ])
rebuild_log (dbname [, filename])
renamecolumn (object_name, old_name, new_name)
resource
row_lock (dbid, tableid, set) - Not Needed
ruleoff ({ rulenum | rulestring } [, { rulenum | rulestring } ]+)
ruleon ( rulenum | rulestring } [, { rulenum | rulestring } ]+)
setcpuweight (weight)
setinstance (objectname, countername, instancename, value)
setioweight (weight)
show_statistics ('table_name', 'target_name')
showcontig (table_id | table_name [, index_id | index_name] [WITH FAST, ALL_INDEXES, TABLERESULTS _
_ [,ALL_LEVELS]])
showdbaffinity
showfilestats [(file_num)]
showoffrules
showonrules
showtableaffinity (table)
showtext ('dbname', {textpointer | {fileid, pageid, slotid [,option]}})
showweights
shrinkdatabase ({dbid | 'dbname'}, [freespace_percentage [, {NOTRUNCATE | TRUNCATEONLY}]])
shrinkdb is no longer supported. Please use shrinkdatabase instead
shrinkfile ({fileid | 'filename'}, [compress_size [, {NOTRUNCATE | TRUNCATEONLY | EMPTYFILE}]])
sqlmgrstats
sqlperf (LOGSPACE)
({IOSTATS | LRUSTATS | NETSTATS | RASTATS [, CLEAR]} | {THREADS} | {LOGSPACE})
stackdump [( {uid[, spid[, ecid]} | {threadId, 'THREADID'}] )]
tab ( dbid, objid )
tape_control {'query' | 'release'}[,('\\.\tape<n>')]
tec [( uid[, spid[, ecid]] )]
textall [({'database_name'|database_id}[, 'FULL' | FAST] )]
textalloc ({'table_name'|table_id}[, 'FULL' | FAST])
thaw_io (db)
traceoff [( tracenum [, tracenum ... ] )]
traceon [( tracenum [, tracenum ... ] )]
tracestatus (trace# [, ...trace#])
unpintable (dbid, table_id)
updateusage ({'database_name'| 0} [, 'table_name' [, index_id]]) [WITH [NO_INFOMSGS] [,] COUNT_ROWS]
upgradedb (db)
usagegovernor (command, value)
useplan [(number_of_plan)]
useroptions
wakeup (spid)
writepage ({ dbid, 'dbname' }, fileid, pageid, offset, length, data)
![]() | Paweł Potasiński (Microsoft Certified Trainer, Asseco Business Solutions S.A.) |