DBCC (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis) SimBanco de Dados SQL do Azure SimInstância Gerenciada do Azure SQL

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, 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 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

Instruções de validação

Instruções de manutenção

Instruções diversas