DBCC (Transact-SQL)
Aplica-se a:SQL Server (todas as versões com suporte)
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
A linguagem de programação Transact-SQL fornece instruções DBCC que atuam como comandos de console de banco de dados para o SQL Server.
As instruções de console de comando de banco de dados são agrupadas nas categorias a seguir.
Categoria de comando | Executar |
---|---|
Manutenção | Tarefas de manutenção em um banco de dados, índice ou grupo de arquivos. |
Diversos | Tarefas diversas, como habilitar sinalizadores de rastreamento ou remover uma DLL da memória. |
Informativo | Tarefas que reúnem e exibem vários tipos de informações. |
Validação | 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. |
Os comandos DBCC assumem os parâmetros de entrada e retornam valores. Todos os parâmetros de comando DBCC aceitam literais Unicode e DBCS.
Uso de instantâneo de banco de dados interno DBCC
Os comandos DBCC a seguir operam em um instantâneo de banco de dados interno somente leitura, criado pelo Mecanismo de Banco de Dados. Isso evita bloqueio e problemas de simultaneidade quando esses comandos são executados. Para obter mais informações, confira Instantâneos de banco de dados (SQL Server).
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKTABLE
Quando você executa um desses comandos DBCC, o Mecanismo de Banco de Dados cria um instantâneo do banco de dados e o leva para um estado consistente de maneira transacional. O comando DBCC executa as verificações segundo esse instantâneo. Depois que o comando DBCC é concluído, o instantâneo é descartado.
Às vezes um instantâneo de banco de dados interno não é necessário ou não pode ser criado. Quando isso ocorre, o comando DBCC é executado no banco de dados real. 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. Esse comportamento equivale a ter a opção WITH TABLOCK especificada.
O instantâneo de banco de dados interno não é criado quando um comando DBCC é executado:
- Em um banco de dados mestre, e a instância do SQL Server está sendo executada no modo de usuário único.
- 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.
- Em um banco de dados somente leitura.
- Em um banco de dados definido como modo de emergência usando a instrução ALTER DATABASE.
- No tempdb. Nesse caso, o instantâneo de banco de dados não pode ser criado em razão de restrições internas.
- Usando a opção WITH TABLOCK. Nesse caso, o DBCC honra a solicitação e não cria um instantâneo de banco de dados.
Os comandos DBCC usam bloqueio de tabela em vez de instantâneos de banco de dados internos quando o comando é executado de acordo com:
- Um grupo de arquivos somente leitura
- Um sistema de arquivos FAT
- Um volume que não oferece suporte a 'named streams'
- Um volume que não oferece suporte a '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. 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.
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.
Relatório de andamento de comandos DBCC
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. A coluna percent_complete indica o percentual total do comando, e a coluna command relata a fase atual da execução do comando.
A definição de uma unidade de andamento depende da fase atual de execução do comando DBCC. 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. A tabela a seguir descreve cada fase da execução e a granularidade em que o comando informa sobre o andamento.
Fase de execução | Descrição | Granularidade do relatório de andamento |
---|---|---|
DBCC TABLE CHECK | A consistência lógica e física dos objetos no banco de dados é verificada nessa fase. | Andamento relatado no nível da página do banco de dados. O valor do relatório de andamento é atualizado a cada 1000 páginas do banco de dados verificadas. |
DBCC 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. | Andamento relatado no nível de correção individual. O contador é atualizado para todas as correções concluídas. |
DBCC ALLOC CHECK | As estruturas de alocação do banco de dados são verificadas durante essa fase. Observação: DBCC CHECKALLOC executa as mesmas verificações. |
O andamento não é relatado |
DBCC 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. | O andamento não é relatado. |
DBCC SYS CHECK | As tabelas do sistema de banco de dados são verificadas nessa fase. | Andamento relatado no nível da página do banco de dados. O valor do relatório de andamento é atualizado a cada 1.000 páginas do banco de dados verificado. |
DBCC 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. | Andamento relatado no nível de correção individual. O contador é atualizado para todas as correções concluídas. |
DBCC SSB CHECK | Os objetos do SQL Server Agente de Serviços são verificados nessa fase. Observação: Essa fase não é executada quando DBCC CHECKTABLE é executado. |
O andamento não é relatado. |
DBCC CHECKCATALOG | A consistência dos catálogos de banco de dados é verificada nessa fase. Observação: Essa fase não é executada quando DBCC CHECKTABLE é executado. |
O andamento não é relatado. |
DBCC IVIEW CHECK | A consistência lógica de todas as exibições indexadas presentes no banco de dados é verificada nessa fase. | O andamento é relatado no nível da exibição de banco de dados individual que está sendo verificada. |
Instruções informativas
- DBCC INPUTBUFFER
- DBCC SHOWCONTIG
- DBCC OPENTRAN
- DBCC OUTPUTBUFFER
- DBCC PROCCACHE
- DBCC SHOW_STATISTICS
- DBCC SQLPERF
- DBCC TRACESTATUS
- DBCC USEROPTIONS
Instruções de validação
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- DBCC CHECKCONSTRAINTS
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKIDENT
- DBCC CHECKTABLE
Instruções de manutenção
- DBCC CLEANTABLE
- DBCC DBREINDEX
- DBCC DROPCLEANBUFFERS
- DBCC FREEPROCCACHE
- DBCC INDEXDEFRAG
- DBCC SHRINKDATABASE
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE
Instruções diversas
- DBCC dllname (FREE)
- DBCC HELP
- DBCC FLUSHAUTHCACHE
- DBCC TRACEOFF
- DBCC FREESESSIONCACHE
- DBCC TRACEON
- DBCC FREESYSTEMCACHE
- DBCC CLONEDATABASE
Aplica-se ao: SQL Server 2014 (12.x) SP2 e posterior.