DBCC (Transact-SQL)
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
A linguagem de programação Transact-SQL fornece instruções DBCC que atuam como comandos do console de banco de dados para o SQL Server.
As instruções Database Console Command são agrupadas nas seguintes categorias.
Categoria de comando | Executar |
---|---|
Manutenção | Tarefas de manutenção em um banco de dados, índice ou grupo de arquivos. |
Disposições diversas | 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 usam parâmetros de entrada e valores de retorno. Todos os parâmetros de comando DBCC podem aceitar literais Unicode e DBCS.
Uso do instantâneo interno do banco de dados 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 snapshot evita problemas de bloqueio e simultaneidade quando esses comandos são executados. Para obter mais informações, consulte 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 de banco de dados e o leva a um estado transacionalmente consistente. Em seguida, o comando DBCC executa as verificações em relação a esse instantâneo. Depois que o comando DBCC for concluído, esse instantâneo será descartado.
Às vezes, um instantâneo interno do banco de dados 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 garantir a consistência dos objetos que está verificando. Esse comportamento é o mesmo como se a opção WITH TABLOCK
fosse especificada.
Um instantâneo interno do banco de dados não é criado quando um comando DBCC é executado:
- No 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 o banco de dados foi colocado no modo de usuário único usando a instruçãoALTER DATABASE
. - Em relação a um banco de dados somente leitura.
- Em relação a um banco de dados que foi definido no modo de emergência usando a instrução
ALTER DATABASE
. - Contra
tempdb
. Nesse caso, um instantâneo de banco de dados não pode ser criado devido a restrições internas. - Usando a opção
WITH TABLOCK
. Nesse caso, o DBCC honra a solicitação não criando um instantâneo de banco de dados.
Os comandos DBCC usam bloqueios de tabela em vez dos instantâneos internos do banco de dados quando o comando é executado em relação ao seguinte:
- Um grupo de arquivos somente leitura
- Um sistema de arquivos FAT
- Um volume que não suporta fluxos nomeados
- Um volume que não suporta fluxos alternativos
Observação
Tentar executar DBCC CHECKALLOC
, ou a parte equivalente de DBCC CHECKDB
, usando a opção WITH TABLOCK
requer um bloqueio exclusivo do banco de dados (X
). Esse bloqueio de banco de dados não pode ser definido em tempdb
ou master
e provavelmente falhará em todos os outros bancos de dados.
Observação
DBCC CHECKDB
falha quando é executado contra master
se um instantâneo de banco de dados interno não puder ser criado.
Relatórios de progresso para comandos DBCC
A exibição de catálogo sys.dm_exec_requests
contém informações sobre o progresso e a fase atual de execução dos comandos DBCC CHECKDB
, CHECKFILEGROUP
e CHECKTABLE
. A coluna percent_complete
indica a porcentagem concluída do comando e a coluna command
relata a fase atual da execução do comando.
A definição de uma unidade de progresso depende da fase atual de execução do comando DBCC. Às vezes, o progresso é relatado na granularidade de uma página de banco de dados, em outras fases é relatado na granularidade de um único banco de dados ou reparo de alocação. A tabela a seguir descreve cada fase de execução e a granularidade na qual o comando relata o progresso.
Fase de execução | Descrição | Granularidade dos relatórios de progresso |
---|---|---|
DBCC TABLE CHECK |
A consistência lógica e física dos objetos no banco de dados é verificada durante essa fase. | Progresso reportado ao nível da página da base de dados. O valor do relatório de progresso é atualizado para cada 1000 páginas de banco de dados verificadas. |
DBCC TABLE REPAIR |
Os reparos do banco de dados são realizados durante essa fase se REPAIR_FAST , REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS for especificado e houver erros de objeto que devem ser reparados. |
Progressos comunicados ao nível da reparação individual. O contador é atualizado para cada reparo concluído. |
DBCC ALLOC CHECK |
As estruturas de atribuição na base de dados são verificadas durante esta fase. Nota: DBCC CHECKALLOC realiza as mesmas verificações. |
O progresso não é reportado |
DBCC ALLOC REPAIR |
Os reparos do banco de dados são realizados durante essa fase se REPAIR_FAST , REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS for especificado, e houver erros de alocação que devem ser reparados. |
O progresso não é relatado. |
DBCC SYS CHECK |
As tabelas do sistema de banco de dados são verificadas durante esta fase. | Progresso reportado ao nível da página da base de dados. O valor do relatório de progresso é atualizado para cada 1000 páginas de banco de dados verificadas. |
DBCC SYS REPAIR |
Os reparos do banco de dados são realizados durante essa fase se REPAIR_FAST , REPAIR_REBUILD ou REPAIR_ALLOW_DATA_LOSS for especificado e houver erros de tabela do sistema que devem ser reparados. |
Progressos comunicados ao nível da reparação individual. O contador é atualizado para cada reparo concluído. |
DBCC SSB CHECK |
Os objetos do SQL Server Service Broker são verificados durante essa fase. Nota: Esta fase não é executada quando DBCC CHECKTABLE é executada. |
O progresso não é relatado. |
DBCC CHECKCATALOG |
A consistência dos catálogos de banco de dados é verificada durante essa fase. Nota: Esta fase não é executada quando DBCC CHECKTABLE é executada. |
O progresso não é relatado. |
DBCC IVIEW CHECK |
A consistência lógica de quaisquer exibições indexadas presentes no banco de dados é verificada durante esta fase. | Progresso relatado no nível da exibição de banco de dados individual que está sendo verificada. |
Declarações informativas
- DBCC INPUTBUFFER
- DBCC SHOWCONTIG
- DBCC OPENTRAN
- DBCC OUTPUTBUFFER
- DBCC PROCCACHE
- DBCC SHOW_STATISTICS
- DBCC SQLPERF
- DBCC TRACESTATUS
- DBCC USEROPTIONS
Declarações de validação
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- DBCC CHECKCONSTRAINTS
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKIDENT
- DBCC CHECKTABLE
Declarações de manutenção
- DBCC CLEANTABLE
- DBCC DBREINDEX
- DBCC DROPCLEANBUFFERS
- DBCC FREEPROCCACHE
- DBCC INDEXDEFRAG
- DBCC SHRINKDATABASE
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE
Declarações diversas
- DBCC dllname (FREE)
- DBCC AJUDA
- 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.)