DBCC (Transact-SQL)

 

Publicado: dezembro de 2016

ESTE TÓPICO APLICA-SE A:simSQL Server (começando com o 2008)nãoBanco de Dados SQL do AzurenãoAzure SQL Data Warehouse nãoParallel Data Warehouse

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 comandoExecutar
ManutençãoTarefas de manutenção em um banco de dados, índice ou grupo de arquivos.
DiversosTarefas diversas, como habilitar sinalizadores de rastreamento ou remover uma DLL da memória.
InformationalTarefas que reúnem e exibem vários tipos de informações.
ValidaçãoOperaçõ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.

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 CHECKALLOCDBCC CHECKDB
DBCC CHECKCATALOGDBCC 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:

  • Contra mestree a instância do SQL Server está sendo executado no modo de usuário único.

  • Em um banco de dados diferente de 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.

  • Contra 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'

System_CAPS_ICON_note.jpg 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 em tempdb ou mestre e talvez falhe em todos os outros bancos de dados.

System_CAPS_ICON_note.jpg Observação


Falha no DBCC CHECKDB quando ele é executado no mestre se um instantâneo de banco de dados interno não pode ser criado.

O exec_requests exibição de catálogo contém informações sobre o andamento e a fase atual da execução dos comandos DBCC CHECKDB, CHECKFILEGROUP e CHECKTABLE. O percent_complete coluna indica a porcentagem total do comando e o comando coluna informa 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çãoDescriptionGranularidade do relatório de andamento
DBCC TABLE CHECKA 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 de relatório de andamento é atualizado a cada 1.000 páginas do banco de dados que são verificadas.
DBCC TABLE REPAIRAs 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 CHECKAs estruturas de alocação do banco de dados são verificadas durante essa fase.

Observação: O DBCC CHECKALLOC executa as mesmas verificações.
Andamento não é relatado
DBCC ALLOC REPAIRAs 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 CHECKAs 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 REPAIRAs 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 CHECKOs 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 CHECKCATALOGA 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 CHECKA 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.
DBCC INPUTBUFFERDBCC SHOWCONTIG
DBCC OPENTRANDBCC SQLPERF
DBCC OUTPUTBUFFERDBCC TRACESTATUS
DBCC PROCCACHEDBCC USEROPTIONS
DBCC SHOW_STATISTICS
DBCC CHECKALLOCDBCC CHECKFILEGROUP
DBCC CHECKCATALOGDBCC CHECKIDENT
DBCC CHECKCONSTRAINTSDBCC CHECKTABLE
DBCC CHECKDB
DBCC CLEANTABLEDBCC INDEXDEFRAG
DBCC DBREINDEXDBCC SHRINKDATABASE
DBCC DROPCLEANBUFFERSDBCC SHRINKFILE
DBCC FREEPROCCACHEDBCC UPDATEUSAGE
DBCC dllname (gratuito)DBCC HELP
DBCC FLUSHAUTHCACHEDBCC TRACEOFF
DBCC FREESESSIONCACHEDBCC TRACEON
DBCC FREESYSTEMCACHEDBCC CLONEDATABASE 

 Aplica-se a: SQL Server 2014 Service Pack 2.

Contribuições da comunidade

ADICIONAR
Mostrar: