DBCC (Transact-SQL)
Aplica-se a: SQL Server 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 do 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. O instantâneo evita problemas de bloqueio e 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.
Um instantâneo de banco de dados interno não é criado quando um comando DBCC é executado:
- Em um banco de dados
master
, e a instância do SQL Server está sendo executada no modo de usuário único. - Em um banco de dados diferente de
master
, mas que foi colocado em modo de usuário único por meio da instruçãoALTER DATABASE
. - Em um banco de dados somente leitura.
- Em um banco de dados definido no modo de emergência usando a instrução
ALTER DATABASE
. - Em
tempdb
. Nesse caso, um 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 dá suporte a fluxos nomeados
- Um volume que não dá suporte a fluxos alternados
Observação
Ao tentar executar DBCC CHECKALLOC
ou a parte equivalente de DBCC CHECKDB
usando a opção WITH TABLOCK
, é necessário ter um bloqueio exclusivo de banco de dados (X
). Esse bloqueio de banco de dados não pode ser definido no tempdb
nem no master
e provavelmente falhará em todos os outros bancos de dados.
Observação
A execução de master
falhará em DBCC CHECKDB
se não for possível criar um instantâneo de banco de dados interno.
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 serão executadas nessa fase se REPAIR_FAST , REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS forem especificados 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. Nota: DBCC CHECKALLOC executa as mesmas verificações. |
O andamento não é relatado |
DBCC ALLOC REPAIR |
As correções de banco de dados serão executadas nessa fase se REPAIR_FAST , REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS forem especificados 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 serão executadas nessa fase se REPAIR_FAST , REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS forem especificados e houver erros de tabela 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: quando DBCC CHECKTABLE é executado, essa fase não é. |
O andamento não é relatado. |
DBCC CHECKCATALOG |
A consistência dos catálogos de banco de dados é verificada nessa fase. Observação: quando DBCC CHECKTABLE é executado, essa fase não é. |
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 a: SQL Server 2014 (12.x) Service Pack 2 e versões posteriores.)