DBCC CHECKCATALOG (Transact-SQL)
Verifica la consistenza dei cataloghi all'interno del database specificato. Il database deve essere in linea.
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 log degli 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 interrotto 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 AdventureWorks, 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 AdventureWorks database.
DBCC CHECKCATALOG (AdventureWorks);
GO