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

ESTE TÓPICO APLICA-SE A:simSQL Server (a partir de 2008)simBanco de Dados SQL do Microsoft AzurenãoAzure SQL Data Warehouse nãoParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

A linguagem de programação Transact-SQLTransact-SQL fornece instruções DBCC que atuam como comandos de console de banco de dados para o SQL ServerSQL Server.The Transact-SQLTransact-SQL programming language provides DBCC statements that act as Database Console Commands for SQL ServerSQL Server.

As instruções de console de comando de banco de dados são agrupadas nas categorias a seguir.Database Console Command statements are grouped into the following categories.

Categoria de comandoCommand category ExecutarPerform
ManutençãoMaintenance Tarefas de manutenção em um banco de dados, índice ou grupo de arquivos.Maintenance tasks on a database, index, or filegroup.
DiversosMiscellaneous Tarefas diversas, como habilitar sinalizadores de rastreamento ou remover uma DLL da memória.Miscellaneous tasks such as enabling trace flags or removing a DLL from memory.
InformationalInformational Tarefas que reúnem e exibem vários tipos de informações.Tasks that gather and display various types of information.
ValidaçãoValidation Operações de validação em um banco de dados, tabela, índice, catálogo, grupo de arquivos ou alocação de páginas de banco de dados.Validation operations on a database, table, index, catalog, filegroup, or allocation of database pages.

Os comandos DBCC assumem os parâmetros de entrada e retornam valores.DBCC commands take input parameters and return values. Todos os parâmetros de comando DBCC aceitam literais Unicode e DBCS.All DBCC command parameters can accept both Unicode and DBCS literals.

Uso de instantâneo de banco de dados interno DBCCDBCC Internal Database Snapshot Usage

Os comandos DBCC a seguir operam em um instantâneo de banco de dados interno somente leitura, criado pelo Mecanismo de Banco de DadosDatabase Engine.The following DBCC commands operate on an internal read-only database snapshot that the Mecanismo de Banco de DadosDatabase Engine creates. Isso evita bloqueio e problemas de simultaneidade quando esses comandos são executados.This prevents blocking and concurrency problems when these commands are executed. Para obter mais informações, consulte Instantâneos de banco de dados (SQL Server).For more information, see Database Snapshots (SQL Server).

  • DBCC CHECKALLOCDBCC CHECKALLOC
  • DBCC CHECKCATALOGDBCC CHECKCATALOG
  • DBCC CHECKDBDBCC CHECKDB
  • DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
  • DBCC CHECKTABLEDBCC CHECKTABLE

Quando você executa um desses comandos DBCC, o Mecanismo de Banco de DadosDatabase Engine cria um instantâneo do banco de dados e o leva para um estado consistente de maneira transacional.When you execute one of these DBCC commands, the Mecanismo de Banco de DadosDatabase Engine creates a database snapshot and brings it to a transactionally consistent state. O comando DBCC executa as verificações segundo esse instantâneo.The DBCC command then runs the checks against this snapshot. Depois que o comando DBCC é concluído, o instantâneo é descartado.After the DBCC command is completed, this snapshot is dropped.

Às vezes um instantâneo de banco de dados interno não é necessário ou não pode ser criado.Sometimes an internal database snapshot is not required or cannot be created. Quando isso ocorre, o comando DBCC é executado no banco de dados real.When this occurs, the DBCC command executes against the actual database. Se o banco de dados estiver online, o comando DBCC usará o bloqueio de tabela para assegurar a consistência dos objetos que está verificando.If the database is online, the DBCC command uses table-locking to ensure the consistency of the objects that it is checking. Esse comportamento equivale a ter a opção WITH TABLOCK especificada.This behavior is the same as if the WITH TABLOCK option were specified.

O instantâneo de banco de dados interno não é criado quando um comando DBCC é executado:An internal database snapshot is not created when a DBCC command is executed:

  • Em um banco de dados mestre, e a instância do SQL ServerSQL Server está sendo executada no modo de usuário único.Against master, and the instance of SQL ServerSQL Server is running in single-user mode.
  • Em um banco de dados diferente do mestre, mas o banco de dados foi colocado em modo de usuário único usando a instrução ALTER DATABASE.Against a database other than master, but the database has been put in single-user mode by using the ALTER DATABASE statement.
  • Em um banco de dados somente leitura.Against a read-only database.
  • Em um banco de dados definido como modo de emergência usando a instrução ALTER DATABASE.Against a database that has been set in emergency mode by using the ALTER DATABASE statement.
  • No tempdb.Against tempdb. Nesse caso, o instantâneo de banco de dados não pode ser criado em razão de restrições internas.In this case, a database snapshot cannot be created because of internal restrictions.
  • Usando a opção WITH TABLOCK.Using the WITH TABLOCK option. Nesse caso, o DBCC honra a solicitação e não cria um instantâneo de banco de dados.In this case, DBCC honors the request by not creating a database snapshot.

Os comandos DBCC usam bloqueio de tabela em vez de instantâneos de banco de dados internos quando o comando é executado de acordo com:The DBCC commands use table locks instead of the internal database snapshots when the command is executed against the following:

  • Um grupo de arquivos somente leituraA read-only filegroup
  • Um sistema de arquivos FATAn FAT file system
  • Um volume que não oferece suporte a 'named streams'A volume that does not support 'named streams'
  • Um volume que não oferece suporte a 'alternate streams'A volume that does not support 'alternate streams'

Observação

A tentativa de executar DBCC CHECKALLOC, ou parte equivalente de DBCC CHECKDB, usando a opção WITH TABLOCK requer bloqueio X de banco de dados.Trying to run DBCC CHECKALLOC, or the equivalent part of DBCC CHECKDB, by using the WITH TABLOCK option requires a database X lock. Esse bloqueio de banco de dados não pode ser definido no tempdb nem no mestre e provavelmente falhará em todos os outros bancos de dados.This database lock cannot be set on tempdb or master and will probably fail on all other databases.

Observação

O DBCC CHECKDB falhará ao ser executado no mestre se um instantâneo de banco de dados interno não puder ser criado.DBCC CHECKDB fails when it is run against master if an internal database snapshot cannot be created.

Relatório de andamento de comandos DBCCProgress Reporting for DBCC Commands

A exibição de catálogo sys.dm_exec_requests contém informações sobre o andamento e a fase atual da execução dos comandos DBCC CHECKDB, CHECKFILEGROUP e CHECKTABLE.The sys.dm_exec_requests catalog view contains information about the progress and the current phase of execution of the DBCC CHECKDB, CHECKFILEGROUP, and CHECKTABLE commands. A coluna percent_complete indica o percentual total do comando, e a coluna command relata a fase atual da execução do comando.The percent_complete column indicates the percentage complete of the command, and the command column reports the current phase of the execution of the command.

A definição de uma unidade de andamento depende da fase atual de execução do comando DBCC.The definition of a unit of progress depends on the current phase of execution of the DBCC command. O andamento é informado ocasionalmente na granularidade de uma página de banco de dados. Em outras fases ele é informado da granularidade de um único banco de dados ou correção de alocação.Sometimes progress is reported at the granularity of a database page, in other phases it is reported at the granularity of a single database or allocation repair. A tabela a seguir descreve cada fase da execução e a granularidade em que o comando informa sobre o andamento.The following table describes each phase of execution, and the granularity at which the command reports progress.

Fase de execuçãoExecution phase DescriçãoDescription Granularidade do relatório de andamentoProgress reporting granularity
DBCC TABLE CHECKDBCC TABLE CHECK A consistência lógica e física dos objetos no banco de dados é verificada nessa fase.The logical and physical consistency of the objects in the database is checked during this phase. Andamento relatado no nível da página do banco de dados.Progress reported at the database page level.

O valor do relatório de andamento é atualizado a cada 1000 páginas do banco de dados verificadas.The progress reporting value is updated for each 1000 database pages that are checked.
DBCC TABLE REPAIRDBCC TABLE REPAIR As correções de banco de dados são executadas nessa fase, se REPAIR_FAST, REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS for especificado e houver erros de objeto que precisem ser corrigidos.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are object errors that must be repaired. Andamento relatado no nível de correção individual.Progress reported at the individual repair level.

O contador é atualizado para todas as correções concluídas.The counter is updated for each repair that is completed.
DBCC ALLOC CHECKDBCC ALLOC CHECK As estruturas de alocação do banco de dados são verificadas durante essa fase.Allocation structures in the database are checked during this phase.

Observação: o DBCC CHECKALLOC executa as mesmas verificações.Note: DBCC CHECKALLOC performs the same checks.
O andamento não é relatadoProgress is not reported
DBCC ALLOC REPAIRDBCC ALLOC REPAIR As correções de banco de dados são realizadas nessa fase se REPAIR_FAST, REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS for especificado e houver erros de alocação que precisem ser corrigidos.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are allocation errors that must be repaired. O andamento não é relatado.Progress is not reported.
DBCC SYS CHECKDBCC SYS CHECK As tabelas do sistema de banco de dados são verificadas nessa fase.Database system tables are checked during this phase. Andamento relatado no nível da página do banco de dados.Progress reported at the database page level.

O valor do relatório de andamento é atualizado a cada 1.000 páginas do banco de dados verificado.The progress reporting value is updated for every 1000 database pages that are checked.
DBCC SYS REPAIRDBCC SYS REPAIR As correções de banco de dados são realizadas nessa fase se REPAIR_FAST, REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS for especificado e houver erros de tabelas do sistema que precisem ser corrigidos.Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are system table errors that must be repaired. Andamento relatado no nível de correção individual.Progress reported at the individual repair level.

O contador é atualizado para todas as correções concluídas.The counter is updated for each repair that is completed.
DBCC SSB CHECKDBCC SSB CHECK Os objetos do SQL ServerSQL Server Agente de Serviços são verificados nessa fase. SQL ServerSQL Server Service Broker objects are checked during this phase.

Observação: esta fase não será executada quando DBCC CHECKTABLE for executado.Note: This phase is not executed when DBCC CHECKTABLE is executed.
O andamento não é relatado.Progress is not reported.
DBCC CHECKCATALOGDBCC CHECKCATALOG A consistência dos catálogos de banco de dados é verificada nessa fase.The consistency of database catalogs are checked during this phase.

Observação: esta fase não será executada quando DBCC CHECKTABLE for executado.Note: This phase is not executed when DBCC CHECKTABLE is executed.
O andamento não é relatado.Progress is not reported.
DBCC IVIEW CHECKDBCC IVIEW CHECK A consistência lógica de todas as exibições indexadas presentes no banco de dados é verificada nessa fase.The logical consistency of any indexed views present in the database is checked during this phase. O andamento é relatado no nível da exibição de banco de dados individual que está sendo verificada.Progress reported at the level of the individual database view that is being checked.

Instruções informativasInformational Statements

DBCC INPUTBUFFERDBCC INPUTBUFFER DBCC SHOWCONTIGDBCC SHOWCONTIG
DBCC OPENTRANDBCC OPENTRAN DBCC SQLPERFDBCC SQLPERF
DBCC OUTPUTBUFFERDBCC OUTPUTBUFFER DBCC TRACESTATUSDBCC TRACESTATUS
DBCC PROCCACHEDBCC PROCCACHE DBCC USEROPTIONSDBCC USEROPTIONS
DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS

Instruções de validaçãoValidation Statements

DBCC CHECKALLOCDBCC CHECKALLOC DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
DBCC CHECKCATALOGDBCC CHECKCATALOG DBCC CHECKIDENTDBCC CHECKIDENT
DBCC CHECKCONSTRAINTSDBCC CHECKCONSTRAINTS DBCC CHECKTABLEDBCC CHECKTABLE
DBCC CHECKDBDBCC CHECKDB

Instruções de manutençãoMaintenance Statements

DBCC CLEANTABLEDBCC CLEANTABLE DBCC INDEXDEFRAGDBCC INDEXDEFRAG
DBCC DBREINDEXDBCC DBREINDEX DBCC SHRINKDATABASEDBCC SHRINKDATABASE
DBCC DROPCLEANBUFFERSDBCC DROPCLEANBUFFERS DBCC SHRINKFILEDBCC SHRINKFILE
DBCC FREEPROCCACHEDBCC FREEPROCCACHE DBCC UPDATEUSAGEDBCC UPDATEUSAGE

Instruções diversasMiscellaneous Statements

DBCC dllname (FREE)DBCC dllname (FREE) DBCC HELPDBCC HELP
DBCC FLUSHAUTHCACHEDBCC FLUSHAUTHCACHE DBCC TRACEOFFDBCC TRACEOFF
DBCC FREESESSIONCACHEDBCC FREESESSIONCACHE DBCC TRACEONDBCC TRACEON
DBCC FREESYSTEMCACHEDBCC FREESYSTEMCACHE DBCC CLONEDATABASEDBCC CLONEDATABASE

Aplica-se a: SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 até SQL Server 2017SQL Server 2017.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 through SQL Server 2017SQL Server 2017.