Příkaz konzoly databáze CHECKDB (DBCC CHECKDB)se používá ke kontrole integrity (fyzické & logické) objektů v databázi SQL Server.Příkaz je podporován v databázích, které obsahují tabulky s optimalizovanou pamětí, ale ověření je podporováno pouze v tabulkách na disku. Možnost DBCC repair není v tabulkách s optimalizovanou pamětí k dispozici, a proto vede k nutnosti pravidelného zálohování databáze. v případě, že se v tabulce s optimalizovanou pamětí vyskytne problém, lze data obnovit z poslední provedené zálohy.
Různé operace, které provádí CHECKDB, jsou:
- DBCC CHECKALLOC provedení v databázi SQL.
- DBCC CHECKTABLE provedení v každé tabulce a pohledu databáze SQL.
- DBCC CHECKCATALOG provedení v databázi SQL.
- Ověření obsahu v indexovaném pohledu databáze.
- Ověření konzistence na úrovni odkazů mezi adresáři souborů a metadaty tabulek.
- Ověření dat zprostředkovatele služeb.
Protože DBCC CHECKDB provádí všechny ostatní příkazy, nebude nutné provádět příkazy CHECKALLOC, CHECKTABLE a CHECKCATALOG zvlášť.
Syntaxe příkazu DBCC CHECKDB
Argumenty použité ve výše uvedené syntaxi označují následující:
název_databáze | ID_databáze | 0 Jedná se o název databáze. v případě, že název není označen nebo je zapsána pouze 0, pak se používá aktuální databáze. NOINDEX Určuje, že se nemá provádět kontrola integrity indexových tabulek bez clusteru. To vede ke zkrácení kompletní doby provádění. tato syntaxe nemá vliv na data umístěná v tabulkách. REPAIR_ALLOW_DATA_LOSS Tato syntaxe opravuje chyby nalezené v databázi, což může vést ke ztrátě některých dat.
Poznámka: Tato syntaxe je podporována společností Microsoft a ne vždy se ukáže jako ideální řešení pro uvedení databáze do dobrého fyzického stavu. Je to proto, že odstraní celá data, která byla nalezena poškozená, a může vést ke ztrátě většího množství dat, než bylo původně v databázi provedeno. proto by měla být přijata jako poslední možnost.
REPAIR_FAST Tento argument pouze zachovává zpětnou kompatibilitu a neprovádí žádnou opravu. REPAIR REBUILD Tento argument zahrnuje rychlejší proces opravy, při kterém nehrozí ztráta dat. ALL_ERRORMSGS Zobrazuje všechny chyby, které vznikly ve všech objektech. Zahrnutí nebo vyloučení této syntaxe nebude mít žádný vliv, protože chybová hlášení jsou obvykle řazena podle ID objektu. Maximální počet vygenerovaných chybových zpráv může dosáhnout až 1000. EXTENDED_LOGICAL_CHECKS Tento argument spouští kontrolu logické konzistence pohledů a indexů, pouze pokud je úroveň kompatibility 100. NO_INFOMSGS Odstraní všechna informační hlášení. TABLOCK Tato syntaxe získá exkluzivní zámek databáze a zvýší rychlost DBCC CHECKDB na databázi v době velkého zatížení. Snižuje však dostupnost databáze pro souběžné operace. ESTIMATEONLY Určuje nebo odhaduje množství místa, které by databáze potřebovala ke spuštění příkazu CHECKDB. PHYSICAL_ONLY Zavádí omezení pro kontrolu pouze fyzické struktury databáze. Krátká režijní kontrola fyzické databáze je doprovázena detekcí roztržených stránek, chyb a běžných problémů, se kterými se uživatelé setkávají. DATA PURITY Tato syntaxe kontroluje hodnoty sloupců, které jsou mimo rozsah nebo nejsou platné. Kontroly integrity hodnot sloupců jsou ve výchozím nastavení povoleny a nepotřebují syntaxi DATA_PURITY.
Věci, které je třeba mít na paměti
- Zakázané indexy nelze kontrolovat pomocí DBCC CHECKDB.
- Pokud je třeba provést DBCC CHECKDB, je třeba serializovat uživatelsky definované a bajtově uspořádané typy. V každém jiném případě dojde k chybě 2537.
- Příkaz DBCC CHECKDB nelze přímo spustit na databázi Resource, protože ji lze upravovat pouze v jednom režimu.
Chybové zprávy generované příkazem DBCC CHECKDB
Po dokončení příkazu CHECKDB se do protokolu chyb SQL zapíše zpráva. V případě úspěchu se vygeneruje zpráva informující o úspěchu a celkové době, po kterou příkaz běžel. V případě neúspěchu je proces ukončen z důvodu výskytu nějaké chyby, což je indikováno zprávou. Různé hodnoty stavu, které představují chybové hlášení, jsou:
Hlášení o chybě
Kdykoli je příkazem CHECKDB zjištěno poškození, vytvoří se v adresáři protokolu serveru SQL výpisový soubor s názvem SQLDUMPNNNN.txt. V případě, že jsou v SQL povoleny funkce Feature Usage Data Collection a Error Reporting, je hlášení o chybě odesláno společnosti Microsoft pro účely zlepšení.
Obnovení databáze
Ve scénáři generování chyb v serveru SQL se doporučuje obnovit databázi z poslední vytvořené zálohy namísto opravy databáze. v případě, že žádná záloha neexistuje, můžete zvolit možnosti opravy. Volba opravy pomocí příkazu REPAIR_ALLOW_DATA_LOSS však může vést ke smazání některých dat.
Alternativní řešení pro obnovu databáze
Příkaz DBCC CHECKDB v zásadě kontroluje konzistenci databáze, včetně fyzické nebo logické. Tento příkaz kontroluje stránky, indexy a některé další součásti databáze serveru SQL, ale v některých kritických bodech se rozhodne odmítnout obnovu databáze SQL. V případě absence zálohy databáze serveru MS SQL mohou zvolené možnosti opravy odstranit značné množství dat, a proto se v zájmu obnovy databáze bez narušení integrity dat můžete rozhodnout pro řešení obnovy databáze Microsoft SQL. Ta zaručují kompletní obnovu databáze bez odstranění jakéhokoli množství dat.