DBCC CHECKDB: поиск и устранение неисправностей, связанных с повреждением базы данных SQL Server

Résumé: DBCC CHECKDB, DBCC, восстановление базы данных, база данных, поврежденная база данных

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

Проблема База данных MICROSOFT SQL Server повреждена, и ее необходимо исправить для поддержания стабильности и согласованности.

Cause

Повреждение программного обеспечения базы данных, журналов и файлов приложений MS SQL Server.

Résolution

DBCC — это встроенный инструмент Microsoft SQL Server, предназначенный для проверки и исправления баз данных Microsoft SQL Server.  В этой статье рассматривается команда DBCC CHECKDB и ее параметры при проверке логической и физической целостности базы данных.

Информация о 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-ver15Эта гиперссылка позволяет перейти на сайт за пределами Dell Technologies.

Действия по запуску DBCC CHECKDB:

  1. Откройте SQL Server Studio Management.
  2. Открытие окна запроса
  3. Введите «DBCC CHECKDB (Имя базы данных)».

Результаты выполнения DBCC CHECKDB
 

        4. Проверьте наличие ошибок распределения и согласованности в нижней части результатов запроса. 
        5.  Если в результатах отображаются ошибки выделения и согласованности, база данных должна быть восстановлена из резервной копии или выполнить восстановление базы данных с помощью DBCC CHECKDB.          

Варианты восстановления DBCC

  1. REPAIR_REBUILD. Команда ниже переводит базу данных в режим, позволяющий выполнить восстановление.
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

Скопируйте следующую команду и вставьте ее в сессию запроса, введите правильное имя базы данных:

--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. Приведенная ниже команда выполняет восстановление базы данных и может привести к потере данных для завершения процесса исправления.

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

Скопируйте следующую команду и вставьте ее в сессию запроса, введите правильное имя базы данных:

Приведенные ниже команды полезны, если на физическом диске базы данных заканчивается пространство.

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

Скопируйте следующую команду и вставьте ее в сеанс запроса и введите правильное имя базы данных:

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

Информация о том, когда использовать 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.