Partilhar via


DBCC (Transact-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

Maintenance

Tarefas de manutenção em um banco de dados, índice ou grupo de arquivos.

Miscellaneous

Tarefas diversas, como habilitar sinalizadores de rastreamento ou remover uma DLL da memória.

Informational

Tarefas que reúnem e exibem vários tipos de informações.

Validation

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 do Banco de Dados.

DBCC CHECKALLOC

DBCC CHECKDB

DBCC CHECKCATALOG

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:

  • No mestre e a instância do SQL Server executada em modo de usuário único.

  • Em um banco de dados diferente do mestre, mas no banco de dados que 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.

  • Em um 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çãoObservaçã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 ou no mestre e talvez falhe em todos os outros bancos de dados.

ObservaçãoObservação

Haverá falha no DBCC CHECKDB quando ele for executado no mestre, caso não seja possível criar um instantâneo de banco de dados interno.

Relatório de andamento de comandos DBCC

A exibição do 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 a porcentagem total do comando, e a coluna command informa sobre 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 1.000 páginas do banco de dados verificado. 

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 que são concluídas.

DBCC ALLOC CHECK

As estruturas de alocação do banco de dados são verificadas durante essa fase.

ObservaçãoObservaçã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çãoObservaçã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çãoObservaçã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.