DBCC (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Il linguaggio di programmazione Transact-SQL include istruzioni DBCC che fungono da comandi DBCC (Database Console Command) per SQL Server.
Le istruzioni DBCC sono suddivise nelle categorie seguenti.
Categoria | Attività svolte |
---|---|
Gestione | Attività di manutenzione di un database, un indice o un filegroup. |
Varie | Attività varie, ad esempio l'attivazione di flag di traccia o la rimozione di una DLL dalla memoria. |
Informativo | Attività mirate alla raccolta e alla visualizzazione di vari tipi di informazioni. |
Convalida | Operazioni di convalida di un database, una tabella, un indice, un catalogo, un filegroup o dell'allocazione delle pagine del database. |
I comandi DBCC accettano parametri di input e restituiscono valori. Tutti i parametri dei comandi DBCC accettano valori letterali sia Unicode che DBCS.
Utilizzo degli snapshot interni del database DBCC
I comandi DBCC seguenti possono essere eseguiti su uno snapshot interno di sola lettura del database creato dal motore di database. Lo snapshot impedisce problemi di blocco e concorrenza quando questi comandi vengono eseguiti. Per altre informazioni, vedere Snapshot del database (SQL Server).
DBCC CHECKALLOC
DBCC CHECKCATALOG
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
Quando si esegue uno di questi comandi DBCC, il motore di database crea uno snapshot del database con uno stato consistente dal punto di vista transazionale. Il comando DBCC esegue quindi i controlli in base a questo snapshot. Al termine dell'esecuzione del comando DBCC, lo snapshot viene eliminato.
A volte uno snapshot interno del database non è necessario o non può essere creato. In tali casi, il comando DBCC viene eseguito sul database effettivo. Se il database è online, il comando DBCC attiva il blocco a livello di tabella per garantire la consistenza degli oggetti controllati, Questo comportamento è identico a quello specificato dall'opzione WITH TABLOCK
.
Uno snapshot interno del database non viene creato quando viene eseguito un comando DBCC:
master
Nel database e nell'istanza di SQL Server è in esecuzione in modalità utente singolo.- In un database diverso da
master
, ma il database è stato inserito in modalità utente singolo tramite l'istruzioneALTER DATABASE
. - Su un database di sola lettura.
- In un database impostato in modalità di emergenza tramite l'istruzione
ALTER DATABASE
. - Rispetto a
tempdb
. In questo caso, non è possibile creare uno snapshot del database a causa di restrizioni interne. - Uso dell'opzione
WITH TABLOCK
. In tal caso, DBCC soddisfa la richiesta evitando di creare uno snapshot del database.
I comandi DBCC utilizzano blocchi a livello di tabella anziché snapshot interni del database quando vengono eseguiti sugli elementi seguenti:
- Un filegroup di sola lettura
- Un file system FAT
- Volume che non supporta flussi denominati
- Volume che non supporta flussi alternativi
Nota
Il tentativo di eseguire DBCC CHECKALLOC
o la parte equivalente di DBCC CHECKDB
, usando l'opzione WITH TABLOCK
richiede un blocco esclusivo del database (X
). Questo blocco del database non può essere impostato su tempdb
o master
e probabilmente avrà esito negativo in tutti gli altri database.
Nota
DBCC CHECKDB
ha esito negativo quando viene eseguito master
su se non è possibile creare uno snapshot interno del database.
Creazione di report sullo stato di avanzamento per i comandi DBCC
La sys.dm_exec_requests
vista del catalogo contiene informazioni sullo stato di avanzamento e sulla fase corrente di esecuzione dei DBCC CHECKDB
comandi , CHECKFILEGROUP
e CHECKTABLE
. La percent_complete
colonna indica la percentuale di completamento del comando e la command
colonna indica la fase corrente dell'esecuzione del comando.
L'unità di riferimento dello stato dipende dalla fase di esecuzione corrente del comando DBCC. In alcune fasi lo stato viene segnalato per ogni pagina del database e in altre per ogni correzione del database o dell'allocazione. Nella tabella seguente viene descritta ogni fase di esecuzione e viene specificato il livello di granularità in base a cui viene segnalato lo stato del comando.
Fase di esecuzione | Descrizione | Granularità del report di stato |
---|---|---|
DBCC TABLE CHECK |
Durante questa fase viene controllata la consistenza logica e fisica degli oggetti del database. | Lo stato viene segnalato a livello di pagina del database. Il valore del report di stato viene aggiornato ogni 1000 pagine del database controllate. |
DBCC TABLE REPAIR |
Le riparazioni del database vengono eseguite durante questa fase se REPAIR_FAST , REPAIR_REBUILD o REPAIR_ALLOW_DATA_LOSS viene specificato e sono presenti errori di oggetto che devono essere ripristinati. |
Lo stato viene segnalato a livello di singola correzione. Il contatore viene aggiornato ogni volta che viene completata una correzione. |
DBCC ALLOC CHECK |
Durante questa fase vengono controllate le strutture di allocazione del database. Nota: DBCC CHECKALLOC esegue gli stessi controlli. |
Lo stato di avanzamento non viene segnalato |
DBCC ALLOC REPAIR |
Le riparazioni del database vengono eseguite durante questa fase se REPAIR_FAST , REPAIR_REBUILD o REPAIR_ALLOW_DATA_LOSS viene specificato e sono presenti errori di allocazione che devono essere ripristinati. |
Lo stato di avanzamento non viene segnalato. |
DBCC SYS CHECK |
Durante questa fase vengono controllate le tabelle di sistema del database. | Lo stato viene segnalato a livello di pagina del database. Il valore del report di stato viene aggiornato ogni 1000 pagine del database controllate. |
DBCC SYS REPAIR |
Le riparazioni del database vengono eseguite durante questa fase se REPAIR_FAST , REPAIR_REBUILD o REPAIR_ALLOW_DATA_LOSS viene specificato e sono presenti errori di tabella di sistema che devono essere ripristinati. |
Lo stato viene segnalato a livello di singola correzione. Il contatore viene aggiornato ogni volta che viene completata una correzione. |
DBCC SSB CHECK |
Durante questa fase vengono controllati gli oggetti di SQL Server Service Broker. Nota: questa fase non viene eseguita quando DBCC CHECKTABLE viene eseguita. |
Lo stato di avanzamento non viene segnalato. |
DBCC CHECKCATALOG |
Durante questa fase viene verificata la coerenza dei cataloghi di database. Nota: questa fase non viene eseguita quando DBCC CHECKTABLE viene eseguita. |
Lo stato di avanzamento non viene segnalato. |
DBCC IVIEW CHECK |
Durante questa fase viene controllata la consistenza logica di tutte le viste indicizzate presenti nel database. | Lo stato viene segnalato a livello di singola vista del database controllata. |
Istruzioni informative
- DBCC INPUTBUFFER
- DBCC SHOWCONTIG
- DBCC OPENTRAN
- DBCC OUTPUTBUFFER
- DBCC PROCCACHE
- DBCC SHOW_STATISTICS
- DBCC SQLPERF
- DBCC TRACESTATUS
- DBCC USEROPTIONS
Istruzioni di convalida
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- DBCC CHECKCONSTRAINTS
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKIDENT
- DBCC CHECKTABLE
Istruzioni di manutenzione
- DBCC CLEANTABLE
- DBCC DBREINDEX
- DBCC DROPCLEANBUFFERS
- DBCC FREEPROCCACHE
- DBCC INDEXDEFRAG
- DBCC SHRINKDATABASE
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE
Istruzioni varie
- DBCC dllname (FREE)
- DBCC HELP
- DBCC FLUSHAUTHCACHE
- DBCC TRACEOFF
- DBCC FREESESSIONCACHE
- DBCC TRACEON
- DBCC FREESYSTEMCACHE
- DBCC CLONEDATABASE (si applica a: SQL Server 2014 (12.x) Service Pack 2 e versioni successive.