DBCC CHECKCATALOG (Transact-SQL)

Si applica a: SQL Server (tutte le versioni supportate) Database SQL di Azure Istanza gestita di SQL di Azure

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

Icona collegamento argomentoConvenzioni relative alla 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 il quale verificare la consistenza dei cataloghi. 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

Dopo il completamento del comando DBCC CHECKCATALOG, nel log degli errori di SQL Server viene scritto un messaggio. 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 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 altre informazioni, vedere Visualizzare le dimensioni del file sparse di uno snapshot del database (Transact-SQL) 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 alcun controllo, perché per motivi di prestazioni gli snapshot di database non sono disponibili in tempdb. Ciò significa che non è possibile ottenere la consistenza delle transazioni necessaria. 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 eseguita anche 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 AdventureWorks2019, 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 AdventureWorks.

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

Vedere anche

DBCC (Transact-SQL)
Tabelle di sistema (Transact-SQL)