Risoluzione dei problemi di danneggiamento del database SQL Server da parte di DBCC CHECKDB

요약: DBCC CHECKDB, DBCC, riparazione del database, database, database danneggiato

이 문서는 다음에 적용됩니다. 이 문서는 다음에 적용되지 않습니다. 이 문서는 특정 제품과 관련이 없습니다. 모든 제품 버전이 이 문서에 나와 있는 것은 아닙니다.

증상

Problema: Il database MS SQL Server è danneggiato e deve essere riparato per mantenere stabilità e coerenza.

원인

Danneggiamento del software nel database, nei log e nei file delle applicazioni di MS SQL Server.

해결

DBCC è uno strumento nativo di Microsoft SQL Server progettato per controllare e ripristinare i database Microsoft SQL Server.  Questo articolo descrive il comando DBCC CHECKDB e le opzioni per il controllo dell'integrità fisica e logica del database.

Informazioni su 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-ver15Questo link ipertestuale indirizza a un sito web esterno a Dell Technologies.

Procedura per eseguire DBCC CHECKDB:

  1. Aprire SQL Server Studio Management
  2. Aprire una finestra di query
  3. Digitare "DBCC CHECKDB (Database Name)"

Risultati dell'esecuzione di DBCC CHECKDB
 

        4. Controllare nella parte inferiore dei risultati della query gli errori di allocazione e coerenza. 
        5.  Se vengono visualizzati errori di allocazione e coerenza nei risultati, il database deve essere ripristinato dal backup o eseguire un ripristino del database utilizzando DBCC CHECKDB.          

Opzioni di ripristino DBCC

  1. REPAIR_REBUILD: Il comando riportato di seguito imposta il database in una modalità che consente la riparazione.
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

Copiare il comando riportato di seguito e incollare nella sessione di query inserendo il nome del database corretto:

--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: Il comando seguente esegue la riparazione del database e potrebbe causare la perdita di dati per completare il processo di riparazione.

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

Copiare il comando riportato di seguito e incollare nella sessione di query inserendo il nome del database corretto:

I comandi riportati di seguito sono utili se lo spazio su disco fisico del database è quasi esaurito.

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

Copiare il comando riportato di seguito e incollare nella sessione di query inserendo il nome del database corretto:

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

Copiare il comando riportato di seguito e incollare per eseguire una query sulla sessione e inserire il nome del database corretto:

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

Informazioni su quando utilizzare DBCC CHECKDB

해당 제품

Dell Quickstart Data Warehouse Appliance, Prosupport for Microsoft Software
문서 속성
문서 번호: 000134529
문서 유형: Solution
마지막 수정 시간: 18 3월 2025
버전:  5
다른 Dell 사용자에게 질문에 대한 답변 찾기
지원 서비스
디바이스에 지원 서비스가 적용되는지 확인하십시오.