Sdílet prostřednictvím


DBCC (Transact-SQL)

platí pro:SQL ServerAzure SQL Databaseazure 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říkazu ALTER 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 CHECKALLOCnebo ekvivalentní části DBCC CHECKDBse 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, CHECKFILEGROUPa 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_REBUILDnebo 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_REBUILDnebo 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_REBUILDnebo 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

Ověřovací příkazy

Příkazy maintenance

Různé příkazy