DBCC (Transact-SQL)
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Programovací jazyk Transact-SQL poskytuje příkazy DBCC, které fungují jako příkazy konzoly databáze pro SQL Server.
Příkazy příkazového řádku konzoly databáze jsou seskupeny do následujících kategorií.
Kategorie příkazů | Provést |
---|---|
Údržba | Úlohy údržby v databázi, indexu nebo skupině souborů |
Rozmanitý | Různé úlohy, jako je povolení příznaků trasování nebo odebrání knihovny DLL z paměti. |
Informační | Úkoly, které shromažďují a zobrazují různé typy informací |
Validace | Operace ověřování databáze, tabulky, indexu, katalogu, skupiny souborů nebo přidělování databázových stránek. |
Příkazy DBCC přebírají vstupní parametry a vrácené hodnoty. Všechny parametry příkazu DBCC mohou přijímat literály Unicode i DBCS.
Využití interního snímku databáze DBCC
Následující příkazy DBCC pracují s interním snímkem databáze jen pro čtení, který databázový stroj vytvoří. Snímek zabraňuje problémům s blokováním a souběžností při spuštění těchto příkazů. Další informace naleznete v tématu Database Snapshots (SQL Server).
DBCC CHECKALLOC
DBCC CHECKCATALOG
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
Když spustíte jeden z těchto příkazů DBCC, databázový stroj vytvoří snímek databáze a přenese ho do transakčního konzistentního stavu. Příkaz DBCC pak spustí kontroly tohoto snímku. Po dokončení příkazu DBCC se tento snímek zahodí.
Někdy není potřeba vytvořit snímek interní databáze nebo ho nejde vytvořit. V takovém případě se příkaz DBCC spustí proti skutečné databázi. Pokud je databáze online, příkaz DBCC používá uzamčení tabulky k zajištění konzistence objektů, které kontroluje. Toto chování je stejné jako v případě, že byla zadána možnost WITH TABLOCK
.
Při spuštění příkazu DBCC se nevytvořil snímek interní databáze:
- U databáze
master
a instance SQL Serveru běží v režimu jednoho uživatele. - Pro jinou databázi než
master
, ale databáze byla vložena do režimu jednoho uživatele pomocí příkazuALTER DATABASE
. - Proti databázi jen pro čtení.
- Proti databázi, která byla nastavena v nouzovém režimu pomocí příkazu
ALTER DATABASE
. - Proti
tempdb
. V takovém případě nejde vytvořit snímek databáze kvůli interním omezením. - Pomocí možnosti
WITH TABLOCK
. V tomto případě DBCC respektuje požadavek tím, že nevytváí snímek databáze.
Příkazy DBCC používají zámky tabulek místo interních snímků databáze, když se příkaz spustí v následujících případech:
- Skupina souborů jen pro čtení
- Systém souborů FAT
- Svazek, který nepodporuje pojmenovaných datových proudů
- Svazek, který nepodporuje alternativních datových proudů
Poznámka
Při pokusu o spuštění DBCC CHECKALLOC
nebo ekvivalentní části DBCC CHECKDB
se pomocí možnosti WITH TABLOCK
vyžaduje zámek databáze (X
). Tento zámek databáze nelze nastavit na tempdb
nebo master
a pravděpodobně selže u všech ostatních databází.
Poznámka
DBCC CHECKDB
selže, když se spustí proti master
, pokud nejde vytvořit interní snímek databáze.
Generování sestav průběhu pro příkazy DBCC
Zobrazení katalogu sys.dm_exec_requests
obsahuje informace o průběhu a aktuální fázi provádění příkazů DBCC CHECKDB
, CHECKFILEGROUP
a CHECKTABLE
. Sloupec percent_complete
označuje procento dokončení příkazu a sloupec command
hlásí aktuální fázi provádění příkazu.
Definice jednotky průběhu závisí na aktuální fázi provádění příkazu DBCC. Někdy se průběh hlásí v členitosti stránky databáze, v jiných fázích se hlásí v členitosti jedné databáze nebo opravy přidělení. Následující tabulka popisuje jednotlivé fáze provádění a členitost, při které příkaz hlásí průběh.
Fáze provádění | Popis | Členitost generování sestav průběhu |
---|---|---|
DBCC TABLE CHECK |
Během této fáze se kontroluje logická a fyzická konzistence objektů v databázi. | Průběh hlášený na úrovni stránky databáze Hodnota generování sestav průběhu se aktualizuje pro každých 1 000 kontrolovaných databázových stránek. |
DBCC TABLE REPAIR |
Oprava databáze se provádí v této fázi, pokud je zadána REPAIR_FAST , REPAIR_REBUILD nebo REPAIR_ALLOW_DATA_LOSS a je nutné opravit chyby objektu. |
Průběh nahlášený na úrovni individuální opravy Čítač se aktualizuje pro každou dokončenou opravu. |
DBCC ALLOC CHECK |
Během této fáze se kontrolují struktury přidělování v databázi. Poznámka: DBCC CHECKALLOC provádí stejné kontroly. |
Průběh se nenahlásil |
DBCC ALLOC REPAIR |
Opravy databáze se provádějí během této fáze, pokud je zadána REPAIR_FAST , REPAIR_REBUILD nebo REPAIR_ALLOW_DATA_LOSS a musí být opraveny chyby přidělení. |
Průběh se nehlásí. |
DBCC SYS CHECK |
Databázové systémové tabulky jsou v této fázi kontrolovány. | Průběh hlášený na úrovni stránky databáze Hodnota generování sestav průběhu se aktualizuje pro každých 1 000 kontrolovaných databázových stránek. |
DBCC SYS REPAIR |
Oprava databáze se provádí v této fázi, pokud je zadána REPAIR_FAST , REPAIR_REBUILD nebo REPAIR_ALLOW_DATA_LOSS a je nutné opravit chyby systémové tabulky. |
Průběh nahlášený na úrovni individuální opravy Čítač se aktualizuje pro každou dokončenou opravu. |
DBCC SSB CHECK |
Během této fáze jsou kontrolovány objekty služby SQL Server Service Broker. Poznámka: Tato fáze se při spuštění DBCC CHECKTABLE nespustí. |
Průběh se nehlásí. |
DBCC CHECKCATALOG |
Během této fáze se kontroluje konzistence katalogů databází. Poznámka: Tato fáze se nespustí při spuštění DBCC CHECKTABLE . |
Průběh se nehlásí. |
DBCC IVIEW CHECK |
Logická konzistence všech indexovaných zobrazení v databázi se kontroluje během této fáze. | Průběh hlášený na úrovni jednotlivých zobrazení databáze, které se kontroluje. |
Informační příkazy
- DBCC INPUTBUFFER
- DBCC SHOWCONTIG
- DBCC OPENTRAN
- DBCC OUTPUTBUFFER
- DBCC PROCCACHE
- DBCC SHOW_STATISTICS
- DBCC SQLPERF
- DBCC TRACESTATUS
- DBCC USEROPTIONS
Ověřovací příkazy
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- KONTROLA DBCC
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKIDENT
- DBCC CHECKTABLE
Příkazy maintenance
- DBCC CLEANTABLE
- DBCC DBREINDEX
- DBCC DROPCLEANBUFFERS
- DBCC FREEPROCCACHE
- DBCC INDEXDEFRAG
- DBCC SHRINKDATABASE
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE
Různé příkazy
- DBCC dllname (FREE)
- nápovědy k DBCC
- DBCC FLUSHAUTHCACHE
- DBCC TRACEOFF
- DBCC FREESESSIONCACHE
- DBCC TRACEON
- DBCC FREESYSTEMCACHE
- DBCC CLONEDATABASE (platí pro: SQL Server 2014 (12.x) Service Pack 2 a novější verze.)