Compartilhar via


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ção ALTER 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

Instruções de validação

Instruções de manutenção

Instruções diversas