Partilhar via


DBCC (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstâ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ção ALTER 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, CHECKFILEGROUPe 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_REBUILDou 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_REBUILDou 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_REBUILDou 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

Declarações de validação

Declarações de manutenção

Declarações diversas