Odstraňování problémů s poškozenou databází systému SQL Server pomocí nástroje DBCC CHECKDB
Resumen: DBCC CHECKDB, DBCC, oprava databáze, databáze, poškozená databáze
Síntomas
Causa
Resolución
DBCC je nativní nástroj systému Microsoft SQL Server navržený ke kontrole a opravě databází systému Microsoft SQL Server. Tento článek pojednává o příkazu a možnostech DBCC CHECKDB při kontrole logické a fyzické integrity databáze.
DBCC CHECKDB (Transact-SQL):
Postup spuštění NÁSTROJE DBCC CHECKDB:
- Otevřete nástroj SQL Server Studio Management.
- Otevře okno dotazu
- Zadejte "DBCC CHECKDB (Database Name)"

Možnosti opravy DBCC
- REPAIR_REBUILD: Následující příkaz přepne databázi do režimu, který umožňuje opravu.
USE Master; GO ALTER DATABASE TSQL2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (TSQL2012, REPAIR_REBUILD) GO ALTER DATABASE TSQL2012 SET MULTI_USER; GO
Zkopírujte níže uvedené příkazy a vložte jej do relace dotazu, do které zadejte správný název databáze:
--Command below performs a Database repair not allowing Data loss USE Master; GO ALTER DATABASE TSQL2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (TSQL2012,REPAIR_REBUILD) GO ALTER DATABASE TSQL2012 SET MULTI_USER; GO
2. REPAIR_ALLOW_DATA_LOSS: Níže uvedené příkaz provede opravu databáze, což může vést ke ztrátě dat a dokončení procesu opravy.
--Command below performs a database repair that may result in data loss, --replace TSQL2012 with the database name of database being repaired USE Master GO ALTER DATABASE TSQL2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO DBCC CHECKDB (TSQL2012, REPAIR_ALLOW_DATA_LOSS) GO ALTERDATABASE TSQL2012 SET MULTI_USER GO
Zkopírujte níže uvedené příkazy a vložte jej do relace dotazu, do které zadejte správný název databáze:
Níže uvedené příkazy jsou užitečné, pokud je nedostatek místa na fyzickém disku databáze.
--Command below estimates the size TEMPDB must be to complete the DBCC CHECKDB job USE Master; GO ALTER DATABASE TSQL2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (TSQL2012, REPAIR_REBUILD) WITH ESTIMATEONLY; GO ALTER DATABASE TSQL2012 SET MULTI_USER GO
Zkopírujte níže uvedené příkazy a vložte jej do relace dotazu, do které zadejte správný název databáze:
--Command below estimates the size TEMPDB must be to complete the DBCC CHECKDB job USE Master; GO ALTER DATABASE TSQL2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (TSQL2012, REPAIR_REBUILD) WITH ESTIMATEONLY; GO ALTER DATABASE TSQL2012 SET MULTI_USER GO
--Command below will run DBCC CHECKDB without using TEMDB and creating a DB --snapshot. When not using TEMPDB with a DB snapshot all data will be checked in -- the live database not not a database snapshot. USE Master; GO ALTER DATABASE TSQL2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (TSQL2012, REPAIR_REBUILD) WITH TABLOCK; GO ALTER DATABASE TSQL2012 SET MULTI_USER GO
Zkopírujte níže uvedené příkazy a vložte je do relace dotazu a zadejte správný název databáze:
--Command below will run DBCC CHECKDB without using TEMPDB and creating a DB --snapshot. When not using TEMPDB with a DB snapshot all data will be checked in ---the live database not a database snapshot. USE Master; GO ALTER DATABASE TSQL2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DBCC CHECKDB (TSQL2012, REPAIR_REBUILD) WITH TABLOCK; GO ALTER DATABASE TSQL2012 SET MULTI_USER GO
