Odstraňování problémů s poškozenou databází systému SQL Server pomocí nástroje DBCC CHECKDB

Résumé: DBCC CHECKDB, DBCC, oprava databáze, databáze, poškozená databáze

Cet article concerne Cet article ne concerne pas Cet article n’est associé à aucun produit spécifique. Toutes les versions du produit ne sont pas identifiées dans cet article.

Symptômes

Problém: Databáze MS SQL Server je poškozená a je třeba ji opravit, aby byla zachována stabilita a konzistence.

Cause

Poškození softwaru databáze, protokolů a souborů aplikací MS SQL Server.

Résolution

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.

Informace DBCC CHECKDB

DBCC CHECKDB (Transact-SQL):

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15Tento hypertextový odkaz vás zavede na webové stránky mimo společnost Dell Technologies.

Postup spuštění NÁSTROJE DBCC CHECKDB:

  1. Otevřete nástroj SQL Server Studio Management.
  2. Otevře okno dotazu
  3. Zadejte "DBCC CHECKDB (Database Name)"

Výsledky pro spuštění DBCC CHECKDB
 

        4. Zkontrolujte, zda se ve spodní části výsledků dotazu zobrazují chyby přidělení a konzistence. 
        5.  Pokud se ve výsledcích zobrazí chyby přidělení a konzistence, databáze by měla být obnovena ze zálohy nebo provést opravu databáze pomocí DBCC CHECKDB.          

Možnosti opravy DBCC

  1. 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

Informace o tom, kdy použít DBCC CHECKDB

Produits concernés

Dell Quickstart Data Warehouse Appliance, Prosupport for Microsoft Software
Propriétés de l’article
Numéro d’article: 000134529
Type d’article: Solution
Dernière modification: 18 mars 2025
Version:  5
Trouvez des réponses à vos questions auprès d’autres utilisateurs Dell
Services de support
Vérifiez si votre appareil est couvert par les services de support.