DBCC CHECKCATALOG (Transact-SQL)
Si applica a: SQL Server 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.
Convenzioni relative alla 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 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 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. 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 snapshot interno del database DBCC in DBCC (Transact-SQL).For more information, see View the Size of a Database Snapshot 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 esclusivo del database per ottenere la coerenza necessaria. Se vengono rilevate incoerenze, non possono essere ripristinate e il database deve essere ripristinato da un backup.
Nota
tempdb
L'esecuzione DBCC CHECKCATALOG
su 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