DBCC CHECKDB: поиск и устранение неисправностей, связанных с повреждением базы данных SQL Server
Summary: DBCC CHECKDB, DBCC, восстановление базы данных, база данных, поврежденная база данных
Symptoms
Cause
Resolution
DBCC — это встроенный инструмент Microsoft SQL Server, предназначенный для проверки и исправления баз данных Microsoft SQL Server. В этой статье рассматривается команда DBCC CHECKDB и ее параметры при проверке логической и физической целостности базы данных.
DBCC CHECKDB (Transact-SQL):
Действия по запуску DBCC CHECKDB:
- Откройте SQL Server Studio Management.
- Открытие окна запроса
- Введите «DBCC CHECKDB (Имя базы данных)».

Варианты восстановления DBCC
- 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
