DBCC CHECKTABLE (Transact-SQL)DBCC CHECKTABLE (Transact-SQL)

Si applica a:Applies to: sìSQL ServerSQL Server (tutte le versioni supportate) yesSQL ServerSQL Server (all supported versions) Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL DatabaseSi applica a:Applies to: sìSQL ServerSQL Server (tutte le versioni supportate) yesSQL ServerSQL Server (all supported versions) Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL Database

Controlla l'integrità di tutte le pagine e le strutture che compongono la tabella o la vista indicizzata.Checks the integrity of all the pages and structures that make up the table or indexed view.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

DBCC CHECKTABLE     
(    
    table_name | view_name    
    [ , { NOINDEX | index_id }    
     |, { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD }     
    ]     
)    
    [ WITH     
        { [ ALL_ERRORMSGS ]    
          [ , EXTENDED_LOGICAL_CHECKS ]     
          [ , NO_INFOMSGS ]    
          [ , TABLOCK ]     
          [ , ESTIMATEONLY ]     
          [ , { PHYSICAL_ONLY | DATA_PURITY } ]     
          [ , MAXDOP = number_of_processors ]    
        }    
    ]    

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgomentiArguments

table_name | view_nametable_name | view_name
Tabella o vista indicizzata per cui si desidera eseguire i controlli di integrità.Is the table or indexed view for which to run integrity checks. I nomi di tabelle e viste devono essere conformi alle regole per gli identificatori.Table or view names must comply with the rules for identifiers.

NOINDEXNOINDEX
Specifica che non è necessario eseguire controlli estesi di indici non cluster per le tabelle utente.Specifies that intensive checks of nonclustered indexes for user tables should not be performed. In questo modo, è possibile ridurre i tempi di esecuzione complessivi.This decreases the overall execution time. NOINDEX non influisce sulle tabelle di sistema perché i controlli di integrità vengono sempre eseguiti su tutti gli indici delle tabelle di sistema.NOINDEX does not affect system tables because the integrity checks are always performed on all system table indexes.

index_idindex_id
Numero di identificazione (ID) dell'indice per cui eseguire i controlli di integrità.Is the index identification (ID) number for which to run integrity checks. Se si specifica index_id, DBCC CHECKTABLE esegue i controlli di integrità solo su tale indice, insieme all'indice heap o cluster.If index_id is specified, DBCC CHECKTABLE runs integrity checks only on that index, together with the heap or clustered index.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Specifica che DBCC CHECKTABLE corregge gli errori rilevati.Specifies that DBCC CHECKTABLE repair the found errors. Per utilizzare un'opzione di correzione, è necessario che il database sia in modalità utente singolo.To use a repair option, the database must be in single-user mode.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
Tenta di riparare tutti gli errori rilevati.Tries to repair all reported errors. Le operazioni di correzione possono comportare la perdita di dati.These repairs can cause some data loss.

REPAIR_FASTREPAIR_FAST
La sintassi è stata mantenuta solo a scopo di compatibilità con le versioni precedenti.Syntax is maintained for backward compatibility only. Non vengono eseguite correzioni.No repair actions are performed.

REPAIR_REBUILDREPAIR_REBUILD
Esegue operazioni di ripristino senza possibilità di perdita dei dati.Performs repairs that have no possibility of data loss. Sono incluse operazioni di ripristino rapide, ad esempio ripristino di righe mancanti in indici non cluster, nonché operazioni che richiedono una maggiore quantità di tempo, come la ricompilazione di un indice.This can include quick repairs, such as repairing missing rows in nonclustered indexes, and more time-consuming repairs, such as rebuilding an index.
Questo argomento non consente di correggere errori relativi ai dati FILESTREAM.This argument does not repair errors involving FILESTREAM data.

Nota

Utilizzare le opzioni REPAIR solo come ultima risorsa.Use the REPAIR options only as a last resort. Per correggere gli errori, è consigliabile eseguire un ripristino da un backup.To repair errors, we recommend restoring from a backup. Le operazioni di correzione non tengono conto degli eventuali vincoli esistenti per le tabelle o tra le tabelle.Repair operations do not consider any of the constraints that may exist on or between tables. Se la tabella specificata è interessata da uno o più vincoli, è consigliabile eseguire DBCC CHECKCONSTRAINTS dopo l'operazione di correzione.If the specified table is involved in one or more constraints, we recommend running DBCC CHECKCONSTRAINTS after a repair operation. Se è necessario usare REPAIR, eseguire DBCC CHECKTABLE senza opzioni di correzione per individuare il livello di correzione da applicare.If you must use REPAIR, run DBCC CHECKTABLE without a repair option to find the repair level to use. Se si prevede di usare il livello REPAIR_ALLOW_DATA_LOSS, è consigliabile eseguire il backup del database prima di eseguire DBCC CHECKTABLE con questa opzione.If you are going to use the REPAIR_ALLOW_DATA_LOSS level, we recommend that you back up the database before you run DBCC CHECKTABLE with this option.

ALL_ERRORMSGSALL_ERRORMSGS
Visualizza un numero illimitato di errori.Displays an unlimited number of errors. Tutti i messaggi di errore vengono visualizzati per impostazione predefinita.All error messages are displayed by default. La specifica o l'omissione di questa opzione non ha alcun effetto.Specifying or omitting this option has no effect.

EXTENDED_LOGICAL_CHECKSEXTENDED_LOGICAL_CHECKS
Se il livello di compatibilità è 100 (SQL Server 2008SQL Server 2008) o maggiore, esegue controlli di consistenza logica in una vista indicizzata, indici XML e indici spaziali, dove presenti.If the compatibility level is 100 ( SQL Server 2008SQL Server 2008) or higher, performs logical consistency checks on an indexed view, XML indexes, and spatial indexes, where present.
Per altre informazioni, vedere Esecuzione di controlli di consistenza logica negli indici nella sezione Osservazioni più avanti in questo argomento.For more information, see Performing Logical Consistency Checks on Indexes in the Remarks section later in this topic.

NO_INFOMSGSNO_INFOMSGS
Disattiva tutti i messaggi informativi.Suppresses all informational messages.

TABLOCKTABLOCK
Impone l'acquisizione di un blocco condiviso a livello di tabella per l'esecuzione di DBCC CHECKTABLE, anziché utilizzare uno snapshot interno del database.Causes DBCC CHECKTABLE to obtain a shared table lock instead of using an internal database snapshot. TABLOCK consente l'esecuzione più rapida di DBCC CHECKTABLE in una tabella con carico di lavoro elevato, ma comporta una diminuzione del livello di concorrenza della tabella durante l'esecuzione di DBCC CHECKTABLE.TABLOCK will cause DBCC CHECKTABLE to run faster on a table under heavy load, but decreases the concurrency available on the table while DBCC CHECKTABLE is running.

ESTIMATEONLYESTIMATEONLY
Visualizza lo spazio di tempdb stimato necessario per eseguire l'istruzione DBCC CHECKTABLE con tutte le altre opzioni specificate.Displays the estimated amount of tempdb space needed to run DBCC CHECKTABLE with all the other specified options.

PHYSICAL_ONLYPHYSICAL_ONLY
Limita il controllo di integrità alla struttura fisica della pagina, alle intestazioni dei record e alla struttura fisica degli alberi B.Limits the checking to the integrity of the physical structure of the page, record headers and the physical structure of B-trees. Progettato per consentire un controllo a basso overhead della consistenza fisica della tabella, questo controllo consente inoltre di rilevare le pagine incomplete e i comuni problemi a livello di hardware che possono compromettere i dati.Designed to provide a small overhead check of the physical consistency of the table, this check can also detect torn pages, and common hardware failures that can compromise data. Un'esecuzione completa di DBCC CHECKTABLE può richiedere tempi notevolmente più lunghi rispetto alle versioni precedenti,A full run of DBCC CHECKTABLE may take considerably longer than in earlier versions. per i seguenti motivi:This behavior occurs because of the following reasons:

  • I controlli logici sono più completi.The logical checks are more comprehensive.
  • Alcune delle strutture sottostanti da controllare sono più complesse.Some of the underlying structures to be checked are more complex.
  • Sono stati introdotti molti nuovi controlli per includere le nuove funzionalità.Many new checks have been introduced to include the new features.

Per questo motivo, l'utilizzo dell'opzione PHYSICAL_ONLY può consentire di ottenere tempi molto più brevi per l'esecuzione di DBCC CHECKTABLE su tabelle di grandi dimensioni ed è quindi l'opzione consigliata per l'esecuzione frequente nei sistemi di produzione.Therefore, using the PHYSICAL_ONLY option may cause a much shorter run-time for DBCC CHECKTABLE on large tables and is therefore recommended for frequent use on production systems. È tuttora consigliabile prevedere periodicamente un'esecuzione completa di DBCC CHECKTABLE.We still recommend that a full run of DBCC CHECKTABLE be performed periodically. La frequenza di esecuzione dipende da fattori specifici per i singoli ambienti aziendali e di produzione.The frequency of these runs depends on factors specific to individual businesses and production environments. L'opzione PHYSICAL_ONLY implica sempre l'utilizzo dell'opzione NO_INFOMSGS e non è consentita con le opzioni di correzione.PHYSICAL_ONLY always implies NO_INFOMSGS and is not allowed with any one of the repair options.

Nota

Se si specifica PHYSICAL_ONLY, DBCC CHECKTABLE ignora tutti i controlli dei dati FILESTREAM.Specifying PHYSICAL_ONLY causes DBCC CHECKTABLE to skip all checks of FILESTREAM data.

DATA_PURITYDATA_PURITY
Consente a DBCC CHECKTABLE di controllare la tabella per individuare valori di colonna non validi o non compresi nell'intervallo dei valori consentiti.Causes DBCC CHECKTABLE to check the table for column values that are not valid or out-of-range. Ad esempio, DBCC CHECKTABLE rileva le colonne con valori di data e ora maggiori o minori dell'intervallo accettabile per il tipo di dati datetime oppure le colonne di tipi di dati numerici approssimati o decimal con valori di precisione o di scala non validi.For example, DBCC CHECKTABLE detects columns with date and time values that are larger than or less than the acceptable range for the datetime data type; or decimal or approximate-numeric data type columns with scale or precision values that are not valid.
I controlli di integrità dei valori di colonna sono abilitati per impostazione predefinita e non richiedono l'opzione DATA_PURITY.Column-value integrity checks are enabled by default and do not require the DATA_PURITY option. Per i database aggiornati da versioni precedenti di SQL ServerSQL Server, è possibile utilizzare DBCC CHECKTABLE WITH DATA_PURITY per individuare e correggere gli errori in una specifica tabella. I controlli dei valori di colonna nella tabella, tuttavia, non vengono abilitati per impostazione predefinita fino a quando DBCC CHECKDB WITH DATA_PURITY non è stato eseguito senza errori nel database.For databases upgraded from earlier versions of SQL ServerSQL Server, you can use DBCC CHECKTABLE WITH DATA_PURITY to find and correct errors on a specific table; however, column-value checks on the table are not enabled by default until DBCC CHECKDB WITH DATA_PURITY has been run error free on the database. A questo punto, DBCC CHECKDB e DBCC CHECKTABLE controllano l'integrità dei valori di colonna per impostazione predefinita.After this, DBCC CHECKDB and DBCC CHECKTABLE check column-value integrity by default.
Gli errori di convalida rilevati da questa opzione non possono essere corretti utilizzando le opzioni di correzione DBCC.Validation errors reported by this option cannot be fixed by using DBCC repair options. Per informazioni sulla correzione manuale di questi errori, vedere l'articolo 923247 della Knowledge Base: Risoluzione dell'errore DBCC 2570 in SQL Server 2005 e versioni successive.For information about manually correcting these errors, see Knowledge Base article 923247: Troubleshooting DBCC error 2570 in SQL Server 2005 and later versions.
Se si specifica PHYSICAL_ONLY, i controlli di integrità di colonna non vengono eseguiti.If PHYSICAL_ONLY is specified, column-integrity checks are not performed.

MAXDOPMAXDOP
Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 e versioni successive).Applies to: SQL ServerSQL Server (Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and later).

Esegue l'override dell'opzione di configurazione Massimo grado di parallelismo di sp_configure per l'istruzione.Overrides the max degree of parallelism configuration option of sp_configure for the statement. MAXDOP può superare il valore configurato con sp_configure.The MAXDOP can exceed the value configured with sp_configure. Se MAXDOP supera il valore configurato con Resource Governor, il motore di database usa il valore MAXDOP di Resource Governor descritto in ALTER WORKLOAD GROUP (Transact-SQL).If MAXDOP exceeds the value configured with Resource Governor, the Database Engine uses the Resource Governor MAXDOP value, described in ALTER WORKLOAD GROUP (Transact-SQL). Quando si utilizza l'hint per la query MAXDOP sono valide tutte le regole semantiche utilizzate con l'opzione di configurazione max degree of parallelism.All semantic rules used with the max degree of parallelism configuration option are applicable when you use the MAXDOP query hint. Per altre informazioni, vedere Configurare l'opzione di configurazione del server max degree of parallelism.For more information, see Configure the max degree of parallelism Server Configuration Option.

Nota

Se MAXDOP è impostato su zero, il server sceglie il grado massimo di parallelismo.If MAXDOP is set to zero then the server chooses the max degree of parallelism.

CommentiRemarks

Nota

Per eseguire DBCC CHECKTABLE su ogni tabella del database, usare DBCC CHECKDB.To perform DBCC CHECKTABLE on every table in the database, use DBCC CHECKDB.

DBCC CHECKTABLE esegue i controlli seguenti per la tabella specificata:For the specified table, DBCC CHECKTABLE checks for the following:

  • Collegamenti corretti per le pagine di dati di indice, all'interno di righe, LOB e di overflow della riga.Index, in-row, LOB, and row-overflow data pages are correctly linked.
  • Ordinamento corretto degli indici.Indexes are in their correct sort order.
  • Consistenza dei puntatori.Pointers are consistent.
  • Presenza di dati accettabili in ogni pagina, incluse le colonne calcolate.The data on each page is reasonable, included computed columns.
  • Presenza di offset di pagina accettabili.Page offsets are reasonable.
  • A ogni riga nella tabella di base corrisponde una riga in ogni indice non cluster e viceversa.Every row in the base table has a matching row in each nonclustered index, and vice-versa.
  • Ogni riga in una tabella o un indice partizionato è inclusa nella partizione corretta.Every row in a partitioned table or index is in the correct partition.
  • Coerenza a livello di collegamenti tra il file system e la tabella quando vengono archiviati i dati varbinary(max) nel file system usando FILESTREAM.Link-level consistency between the file system and table when storing varbinary(max) data in the file system using FILESTREAM.

Esecuzione di controlli di consistenza logica negli indiciPerforming Logical Consistency Checks on Indexes

I controlli di consistenza logica negli indici variano in base al livello di compatibilità del database, come indicato di seguito:Logical consistency checking on indexes varies according to the compatibility level of the database, as follows:

  • Se il livello di compatibilità è 100 (SQL Server 2008SQL Server 2008) o maggiore:If the compatibility level is 100 (SQL Server 2008SQL Server 2008) or higher:

    • A meno che non venga specificato NOINDEX, tramite DBCC CHECKTABLE vengono eseguiti controlli di consistenza sia fisica che logica in una singola tabella e in tutti i relativi indici non cluster.Unless NOINDEX is specified, DBCC CHECKTABLE performs both physical and logical consistency checks on a single table and on all its nonclustered indexes. Per impostazione predefinita, tuttavia, negli indici XML, negli indici spaziali e nelle viste indicizzate vengono eseguiti solo controlli di consistenza fisica.However, on XML indexes, spatial indexes, and indexed views only physical consistency checks are performed by default.
    • Se viene specificato WITH EXTENDED_LOGICAL_CHECKS, vengono eseguiti controlli logici in una vista indicizzata, indici XML e indici spaziali, dove presenti.If WITH EXTENDED_LOGICAL_CHECKS is specified, logical checks are performed on an indexed view, XML indexes, and spatial indexes, where present. Per impostazione predefinita, i controlli di consistenza fisica vengono eseguiti prima di quelli di consistenza logica.By default, physical consistency checks are performed before the logical consistency checks. Se viene specificato anche NOINDEX, vengono eseguiti solo i controlli logici.If NOINDEX is also specified, only the logical checks are performed.
      Tramite questi controlli di consistenza logica vengono eseguiti controlli incrociati della tabella degli indici interna dell'oggetto Index con la tabella utente a cui viene fatto riferimento.These logical consistency checks cross check the internal index table of the index object with the user table that it is referencing. Per trovare le righe esterne, viene creata una query interna per eseguire un'intersezione completa della tabella interna e della tabella utente.To find outlying rows, an internal query is constructed to perform a full intersection of the internal and user tables. L'esecuzione di questa query può influire notevolmente sulle prestazioni e non è possibile tenere traccia del relativo stato di avanzamento.Running this query can have a very high effect on performance, and its progress cannot be tracked. È pertanto consigliabile specificare WITH EXTENDED_LOGICAL_CHECKS solo se si sospetta la presenza di problemi dell'indice non correlati a danni fisici o se i checksum a livello di pagina sono stati disabilitati e si sospetta la presenza di danni hardware a livello di colonna.Therefore, we recommend that you specify WITH EXTENDED_LOGICAL_CHECKS only if you suspect index issues that are unrelated to physical corruption, or if page-level checksums have been turned off and you suspect column-level hardware corruption.
    • Se l'indice è un indice filtrato, tramite DBCC CHECKDB vengono eseguiti controlli di consistenza per verificare che le voci di indice soddisfino il predicato del filtro.If the index is a filtered index, DBCC CHECKDB performs consistency checks to verify that the index entries satisfy the filter predicate.
  • A partire da SQL Server 2016 (13.x)SQL Server 2016 (13.x), non verranno eseguiti per impostazione predefinita controlli aggiuntivi su colonne calcolate persistenti, colonne UDT e indici filtrati per evitare valutazioni di espressioni costose.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), additional checks on persisted computed columns, UDT columns, and filtered indexes will not run by default to avoid the expensive expression evaluations. Questa modifica riduce notevolmente la durata di CHECKDB su database contenenti tali oggetti.This change greatly reduces the duration of CHECKDB against databases containing these objects. Tuttavia, le verifiche di coerenza fisica di questi oggetti vengono sempre completate.However, the physical consistency checks of these objects is always completed. Le valutazioni delle espressioni vengono eseguite, oltre alle verifiche logiche già presenti, ovvero viste indicizzate, indici XML e indici spaziali, solo quando è specificata l'opzione EXTENDED_LOGICAL_CHECKS, in quanto parte di tale opzione.Only when EXTENDED_LOGICAL_CHECKS option is specified will the expression evaluations be performed in addition to already present logical checks (indexed view, XML indexes, and spatial indexes) as part of the EXTENDED_LOGICAL_CHECKS option.

  • Se il livello di compatibilità è 90 (SQL Server 2005 (9.x)SQL Server 2005 (9.x)) o minore, a meno che non venga specificato NOINDEX, tramite DBCC CHECKTABLE vengono eseguite verifiche di coerenza sia fisica che logica in una singola tabella o vista indicizzata e in tutti i relativi indici non cluster e XML.If the compatibility level is 90 (SQL Server 2005 (9.x)SQL Server 2005 (9.x)) or less, unless NOINDEX is specified, DBCC CHECKTABLE performs both physical and logical consistency checks on a single table or indexed view and on all its nonclustered and XML indexes. Gli indici spaziali non sono supportati.Spatial indexes are not supported.

Per informazioni sul livello di compatibilità di un database To learn the compatibility level of a database
Visualizzare o modificare il livello di compatibilità di un databaseView or Change the Compatibility Level of a Database

Snapshot di database internoInternal Database Snapshot

DBCC CHECKTABLE utilizza uno snapshot interno del database per garantire la consistenza transazionale necessaria per l'esecuzione di questi controlli.DBCC CHECKTABLE uses an internal database snapshot to provide the transactional consistency that it must have to perform these checks. 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).For more information, see View the Size of the Sparse File of a Database Snapshot (Transact-SQL) and the "DBCC Internal Database Snapshot Usage" section in DBCC (Transact-SQL). Se non è possibile creare uno snapshot o se viene specificato TABLOCK, DBCC CHECKTABLE acquisisce un blocco condiviso a livello di tabella per ottenere la consistenza necessaria.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKTABLE acquires a shared table lock to obtain the required consistency.

Nota

Se si esegue DBCC CHECKTABLE sul database tempdb, è richiesta l'acquisizione di un blocco di tabella condiviso.If DBCC CHECKTABLE is run against tempdb, it must acquire a shared table lock. Questo funzionamento dipende dal fatto che per motivi di prestazioni gli snapshot di database non sono disponibili in tempdb.This is because, for performance reasons, database snapshots are not available on tempdb. Ciò significa che non è possibile ottenere la consistenza delle transazioni necessaria.This means that the required transactional consistency cannot be obtained.

Controllo e ripristino dei dati FILESTREAMChecking and Repairing FILESTREAM Data

Quando FILESTREAM è abilitato per un database e una tabella, è possibile, facoltativamente, archiviare oggetti binari di grandi dimensioni (BLOB) varbinary(max) nel file system.When FILESTREAM is enabled for a database and table, you can optionally store varbinary(max) binary large objects (BLOBs) in the file system. Quando si utilizza DBCC CHECKTABLE in una tabella tramite cui vengono archiviati oggetti BLOB nel file system, tramite DBCC viene verificata la consistenza a livello di collegamenti tra il file system e il database.When using DBCC CHECKTABLE on a table that stores BLOBs in the file system, DBCC checks link-level consistency between the file system and database. Se, ad esempio, una tabella contiene una colonna varbinary(max) che usa l'attributo FILESTREAM, tramite DBCC CHECKTABLE viene verificato che sia presente un mapping uno-a-uno tra le directory e i file del file system e le righe, le colonne e i valori di colonna della tabella.For example, if a table contains a varbinary(max) column that uses the FILESTREAM attribute, DBCC CHECKTABLE will check that there is a one-to-one mapping between file system directories and files and table rows, columns, and column values. DBCC CHECKTABLE consente di correggere i danneggiamenti se si specifica l'opzione REPAIR_ALLOW_DATA_LOSS.DBCC CHECKTABLE can repair corruption if you specify the REPAIR_ALLOW_DATA_LOSS option. Per correggere i danneggiamenti relativi a FILESTREAM, DBCC elimina qualsiasi riga di tabella in cui non sono presenti dati del file system e qualsiasi directory e file sui quali non è stato eseguito il mapping a una riga, una colonna o un valore di colonna della tabella.To repair FILESTREAM corruption, DBCC will delete any table rows that are missing file system data and will delete any directories and files that do not map to a table row, column, or column value.

Controllo parallelo degli oggettiChecking Objects in Parallel

Per impostazione predefinita, DBCC CHECKTABLE esegue un controllo parallelo degli oggetti.By default, DBCC CHECKTABLE performs parallel checking of objects. Il grado di parallelismo viene determinato in modo automatico da Query Processor.The degree of parallelism is automatically determined by the query processor. Il grado di parallelismo massimo viene configurato esattamente come per le query parallele.The maximum degree of parallelism is configured in the same manner as that of parallel queries. Per limitare il numero massimo di processori disponibili per la verifica DBCC, usare sp_configure.To restrict the maximum number of processors available for DBCC checking, use sp_configure. Per altre informazioni, vedere Configurare l'opzione di configurazione del server max degree of parallelism.For more information, see Configure the max degree of parallelism Server Configuration Option. È possibile disabilitare il controllo parallelo tramite il flag di traccia 2528.Parallel checking can be disabled by using trace flag 2528. Per altre informazioni, vedere Flag di traccia (Transact-SQL).For more information, see Trace Flags (Transact-SQL).

Nota

Durante un'operazione DBCC CHECKTABLE i byte archiviati in una colonna con tipo definito dall'utente ordinato per byte devono essere uguali alla serializzazione calcolata del valore con tipo definito dall'utente.During a DBCC CHECKTABLE operation, the bytes that are stored in a byte-ordered user-defined type column must be equal to the computed serialization of the user-defined type value. Se questa condizione non si verifica, la routine DBCC CHECKTABLE restituirà un errore di consistenza.If this is not true, the DBCC CHECKTABLE routine will report a consistency error.

Informazioni sui messaggi di errore DBCCUnderstanding DBCC Error Messages

Dopo il completamento del comando DBCC CHECKTABLE, nel log degli errori di SQL ServerSQL Server viene scritto un messaggio.After the DBCC CHECKTABLE command finishes, a message is written to the SQL ServerSQL Server error log. Se il comando DBCC viene eseguito correttamente, il messaggio indica il completamento corretto e la durata dell'esecuzione del comando.If the DBCC command successfully executes, the message indicates a successful completion and the amount of time that the command ran. 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.If the DBCC command stops before completing the check because of an error, the message indicates the command was terminated, a state value, and the amount of time the command ran. Nella tabella seguente sono elencati e descritti i valori di stato che possono essere inclusi nel messaggio.The following table lists and describes the state values that can be included in the message.

StateState DescrizioneDescription
00 È stato generato l'errore numero 8930.Error number 8930 was raised. Indica che il comando DBCC è stato terminato a causa di un danneggiamento dei metadati.This indicates a metadata corruption that caused the DBCC command to terminate.
11 È stato generato l'errore numero 8967.Error number 8967 was raised. Si è verificato un errore DBCC interno.There was an internal DBCC error.
22 Si è verificato un errore durante un ripristino di database in modalità di emergenza.A failure occurred during emergency mode database repair.
33 Indica che il comando DBCC è stato terminato a causa di un danneggiamento dei metadati.This indicates a metadata corruption that caused the DBCC command to terminate.
44 È stata rilevata una violazione di accesso o asserzione.An assert or access violation was detected.
55 il comando DBCC è stato terminato da un errore sconosciuto.An unknown error occurred that terminated the DBCC command.

Segnalazione erroriError Reporting

Quando DBCC CHECKTABLE rileva un errore di danneggiamento, viene creato un piccolo file di dump denominato SQLDUMP*nnnn*.txt nella directory LOG di SQL ServerSQL Server.A mini-dump file (SQLDUMP*nnnn*.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKTABLE detects a corruption error. Quando la raccolta di dati Utilizzo caratteristiche e le funzionalità Segnalazione errori sono abilitate per l'istanza di SQL ServerSQL Server, il file viene inoltrato automaticamente a MicrosoftMicrosoft.When the Feature Usage data collection and Error Reporting features are enabled for the instance of SQL ServerSQL Server, the file is automatically forwarded to MicrosoftMicrosoft. I dati raccolti consentono di migliorare la funzionalità di SQL ServerSQL Server.The collected data is used to improve SQL ServerSQL Server functionality. Il file di dump contiene i risultati dell'esecuzione del comando DBCC CHECKTABLE e l'output di dati diagnostici supplementari.The dump file contains the results of the DBCC CHECKTABLE command and additional diagnostic output. Il file dispone di elenchi di controllo di accesso discrezionale (DACL) limitati.The file has restricted discretionary access-control lists (DACLs). L'accesso è limitato all'account del servizio SQL ServerSQL Server e ai membri del ruolo sysadmin.Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. Per impostazione predefinita il ruolo sysadmin contiene tutti i membri del gruppo BUILTIN\Administrators di Windows e del gruppo dell'amministratore locale.By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. Se il processo di raccolta dei dati non ha esito positivo, l'esecuzione del comando DBCC viene completata comunque.The DBCC command does not fail if the data collection process fails.

Risoluzione degli erroriResolving Errors

Se vengono segnalati errori dopo l'esecuzione di DBCC CHECKTABLE, è consigliabile eseguire il ripristino del database dal backup, anziché eseguire REPAIR con una delle opzioni REPAIR.If DBCC CHECKTABLE reports any errors, we recommend restoring the database from the database backup instead of running REPAIR with one of the REPAIR options. Se non è disponibile un backup, l'esecuzione di REPAIR può consentire la correzione degli errori segnalati.If no backup exists, running REPAIR can correct the errors that are reported. L'opzione REPAIR da utilizzare viene indicata alla fine dell'elenco degli errori segnalati.The REPAIR option to use is specified at the end of the list of reported errors. Si noti, tuttavia, che la correzione di errori con l'opzione REPAIR_ALLOW_DATA_LOSS potrebbe richiedere l'eliminazione di alcune pagine, con conseguente perdita di dati.However, that correcting the errors by using the REPAIR_ALLOW_DATA_LOSS option might require that some pages, and therefore data, be deleted.
È possibile eseguire l'operazione di correzione tramite una transazione utente che consente il rollback delle modifiche apportate.The repair can be performed under a user transaction to allow the user to roll back the changes that have been made. Se si esegue il rollback delle correzioni, il database include ancora errori e deve essere ripristinato da un backup.If repairs are rolled back, the database will still contain errors and must be restored from a backup. Dopo il completamento di tutte le correzioni, eseguire il backup del database.After you have completed all repairs, back up the database.

Set di risultatiResult Sets

DBCC CHECKTABLE restituisce il set dei risultati seguente.DBCC CHECKTABLE returns the following result set. Viene restituito lo stesso set di risultati se si specifica solo il nome della tabella o qualsiasi opzione.The same result set is returned if you specify only the table name or any of the options.

DBCC results for 'HumanResources.Employee'.    
There are 288 rows in 13 pages for object 'Employee'.    
DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

Se si specifica l'opzione ESTIMATEONLY, DBCC CHECKTABLE restituisce il set di risultati seguente:DBCC CHECKTABLE returns the following result set if the ESTIMATEONLY option is specified:

Estimated TEMPDB space needed for CHECKTABLES (KB)     
--------------------------------------------------     
21    
(1 row(s) affected)    
DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

AutorizzazioniPermissions

L'utente deve essere il proprietario della tabella oppure un membro del ruolo predefinito del server sysadmin o dei ruoli predefiniti del database db_owner o db_ddladmin.User must own the table, or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role.

EsempiExamples

R.A. Controllo di una tabella specificaChecking a specific table

Nell'esempio seguente viene controllata l'integrità delle pagine di dati della tabella HumanResources.Employee nel database AdventureWorks2012AdventureWorks2012.The following example checks the data page integrity of the HumanResources.Employee table in the AdventureWorks2012AdventureWorks2012 database.

DBCC CHECKTABLE ('HumanResources.Employee');    
GO    

B.B. Esecuzione di un controllo della tabella a basso overheadPerforming a low-overhead check of the table

Nell'esempio seguente viene eseguito un controllo a basso overhead della tabella Employee nel database AdventureWorks2012AdventureWorks2012.The following example performs a low overhead check of the Employee table in the AdventureWorks2012AdventureWorks2012 database.

DBCC CHECKTABLE ('HumanResources.Employee') WITH PHYSICAL_ONLY;    
GO    

C.C. Controllo di un indice specificoChecking a specific index

Nell'esempio seguente viene eseguito il controllo di un indice specifico, recuperato tramite l'accesso a sys.indexes.The following example checks a specific index, obtained by accessing sys.indexes.

DECLARE @indid int;    
SET @indid = (SELECT index_id     
              FROM sys.indexes    
              WHERE object_id = OBJECT_ID('Production.Product')    
                    AND name = 'AK_Product_Name');    
DBCC CHECKTABLE ('Production.Product',@indid);    

Vedere ancheSee Also

DBCC (Transact-SQL) DBCC (Transact-SQL)
DBCC CHECKDB (Transact-SQL)DBCC CHECKDB (Transact-SQL)