DBCC CHECKCATALOG (Transact-SQL)

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

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • database_name | database_id | 0
    Nome o ID del database per il quale verificare la consistenza dei cataloghi. Se omesso oppure se viene specificato 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

Dopo il completamento del comando DBCC CATALOG, viene scritto un messaggio nel registro errori di 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.

Stato

Descrizione

0

È stato generato l'errore numero 8930, che 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 consistenza tra le tabelle di metadati di sistema. DBCC CHECKCATALOG utilizza uno snapshot interno del database per garantire la consistenza necessaria a livello di transazioni per eseguire queste verifiche. Per ulteriori informazioni, vedere Informazioni sulle dimensioni dei file sparse negli snapshot del database e la sezione "Utilizzo dello snapshot interno del database DBCC" in DBCC (Transact-SQL).

Se risulta impossibile creare uno snapshot, DBCC CHECKCATALOG acquisisce un blocco esclusivo a livello di database per ottenere la consistenza richiesta. Le eventuali inconsistenze rilevate non potranno essere riparate e pertanto sarà necessario ripristinare il database da un backup.

Nota

L'esecuzione di DBCC CHECKCATALOG in tempdb non comporta l'esecuzione di alcuna verifica. Questo funzionamento dipende dal fatto che per motivi di prestazioni gli snapshot di database non sono disponibili in tempdb. Ciò significa che non è possibile ottenere la necessaria consistenza transazionale. Riciclare il server per risolvere gli eventuali problemi a livello di metadati di tempdb.

Nota

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

L'istruzione DBCC CHECKCATALOG viene inoltre eseguita come parte di DBCC CHECKDB.

Set di risultati

Se non si specifica alcun database, DBCC CHECKCATALOG restituisce:

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

Se come nome del database si specifica AdventureWorks2008R2, 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 AdventureWorks2008R2.

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