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 de banco de dados (SQL Server).
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çã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çã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.
|
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.
|
O andamento não é relatado. |
||
DBCC CHECKCATALOG |
A consistência dos catálogos de banco de dados é verificada nessa fase.
|
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
|