DBCC CHECKCATALOG (Transact-SQL)

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di Azure

Verifica la consistenza dei cataloghi all'interno del database specificato. Il database deve essere online.

Convenzioni della sintassi Transact-SQL

Sintassi

DBCC CHECKCATALOG
[
    (
    database_name | database_id | 0
    )
]
    [ WITH NO_INFOMSGS ]

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Argomenti

database_name | database_id | 0

Nome o ID del database per cui verificare la coerenza del catalogo. Se questo argomento viene omesso oppure se viene specificato il valore 0, viene utilizzato il database corrente. I nomi dei database devono essere conformi alle regole per gli identificatori.

WITH NO_INFOMSGS

Disattiva tutti i messaggi informativi.

Osservazioni

Al termine del DBCC CHECKCATALOG comando, viene scritto un messaggio nel log degli errori SQL Server. Se il comando DBCC viene eseguito correttamente, il messaggio indica il completamento corretto e la durata dell'esecuzione del comando. Se il comando DBCC viene arrestato prima del completamento del controllo a causa di un errore, il messaggio indica che il comando è stato terminato e specifica un valore di stato e la durata dell'esecuzione del comando. Nella tabella seguente sono elencati e descritti i valori di stato che possono essere inclusi nel messaggio.

State Descrizione
0 È stato generato l'errore numero 8930. Indica che il comando DBCC è stato terminato a causa di un danneggiamento dei metadati.
1 È stato generato l'errore numero 8967. Si è verificato un errore DBCC interno.
2 Si è verificato un errore durante un ripristino di database in modalità di emergenza.
3 Indica che il comando DBCC è stato terminato a causa di un danneggiamento dei metadati.
4 È stata rilevata una violazione di accesso o asserzione.
5 il comando DBCC è stato terminato da un errore sconosciuto.

DBCC CHECKCATALOG esegue vari controlli di coerenza tra le tabelle dei metadati di sistema. DBCC CHECKCATALOG usa uno snapshot interno del database per garantire la coerenza transazionale necessaria per eseguire questi controlli. Per altre informazioni, vedere Visualizzare le dimensioni del file sparse di uno snapshot del database (Transact-SQL) e la sezione utilizzo degli snapshot interni del database DBCC in DBCC (Transact-SQL).For more information, see View the Size of the Sparse File of a Database Snapshot (Transact-SQL) and the DBCC internal database snapshot usage section in DBCC (Transact-SQL).

Se non è possibile creare DBCC CHECKCATALOG uno snapshot acquisisce un blocco di database esclusivo per ottenere la coerenza necessaria. Se vengono rilevate incoerenze, non possono essere ripristinate e il database deve essere ripristinato da un backup.

Nota

L'esecuzione su DBCC CHECKCATALOGtempdb non esegue alcun controllo. Ciò è dovuto al fatto che, per motivi di prestazioni, gli snapshot del database non sono disponibili in tempdb. Ciò significa che non è possibile ottenere la consistenza delle transazioni necessaria. Riavviare il servizio Motore di database per risolvere eventuali tempdb problemi di metadati.

Nota

DBCC CHECKCATALOG non controlla i dati FILESTREAM. Tramite FILESTREAM vengono archiviati oggetti binari di grandi dimensioni (BLOB) nel file system.

DBCC CHECKCATALOG viene eseguito anche come parte di DBCC CHECKDB.

Set di risultati

Se non viene specificato alcun database, DBCC CHECKCATALOG restituisce:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Se AdventureWorks2022 viene specificato come nome del database, DBCC CHECKCATALOG restituisce:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner .

Esempi

Nell'esempio seguente viene eseguito il controllo dell'integrità dei cataloghi nel database corrente e nel database AdventureWorks2022.

-- Check the current database.
DBCC CHECKCATALOG;
GO
-- Check the AdventureWorks database.
DBCC CHECKCATALOG (AdventureWorks2022);
GO

Vedi anche