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

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

Acest articol se aplică pentru Acest articol nu se aplică pentru Acest articol nu este legat de un produs specific. Acest articol nu acoperă toate versiunile de produs existente.

Symptoms

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

Cause

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

Resolution

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

Produse afectate

Dell Quickstart Data Warehouse Appliance, Prosupport for Microsoft Software
Proprietăți articol
Article Number: 000134529
Article Type: Solution
Ultima modificare: 18 mar. 2025
Version:  5
Găsiți răspunsuri la întrebările dvs. de la alți utilizatori Dell
Servicii de asistență
Verificați dacă dispozitivul dvs. este acoperit de serviciile de asistență.