Conforme dito anteriormente, esta sigla se refere à DataBase Console Commands e são comandos que fazem a consistência lógica e física do banco de dados. Apesar da maioria dos comandos ser somente para retornar informações sobre o banco temos alguns comandos podem ajudar a resolver problemas, outros que foram mantidos somente por compatibilidade e outros são de rara utilidade.
O comandos DBCC basicamente se dividem em 4 categorias descritas a seguir:
1. Comandos de Manutenção
Fazem alguma manutenção preventiva ou corretiva no banco de dados. Alguns comandos desta categoria:
|
DBCC DBREINDEX |
Reconstrói os índices de uma tabela. Muito útil para manutenção de índices. |
|
DBCC DBREPAIR |
Apaga um banco corrompido. Use DRP DATABASE ao invés de DBCC DBREPAIR. |
|
DBCC INDEXDEFRAG |
Desfragmenta um ou mais índices de uma tabela. Melhora a performance do índice. |
|
DBCC SHRINKDATABASE |
Diminui o tamanho de todos os arquivos de dados ou Log de um banco de dados até um certo tamanho. |
|
DBCC SHRINKFILE |
Diminui o tamanho de um arquivo específico de dados ou Log de um banco de dados até um certo tamanho. |
|
DBCC UPDATEUSAGE |
Corrige erros de tamanho de dados retornados pela Stored Procedure sp_spaceused. |
2. Comandos Gerais
Possuem diversas funcionalidades, como alocação de tabela na memória, ajuda sobre outros comandos DBCC e ‘pinagem’ de tabela. Comandos:
|
DBCC
|
Descarrega da memória uma DLL que possui alguma Extend Stored Procedure associada a ela. |
|
DBCC HELP |
Retorna a sintaxe de algum outro comando DBCC |
|
DBCC PINTABLE |
‘Pina’ a tabela , ou seja , faz o SQL Server não liberar da memória algumas informações de uma tabela. Se utilizado com cuidado , há ganho de performance. |
|
DBCC UNPINTABLE |
Faz o SQL Server liberar da memórias algumas informações de uma tabela que foi ‘pinada’ como comando DBCC PINTABLE. |
|
DBCC ROWLOCK |
Simplesmente incluída por compatibilidade. A funcionalidade que este comando proporcionava já é embutida automaticamente no SQL Server 2000 |
|
DBCC TRACEON |
Habilita um flag de trace que é necessário para outros comandos DBCC. |
|
DBCC TRACEOFF |
Desabilita um flag de trace setado como comando DBCC TRACEON |
3. Comandos de Status
Fazem algumas verificações de algumas configurações do banco de dados. Comandos:
|
DBCC INPUTBUFFER |
Mostra o último comando enviado por um processo ( usuário ) no SQL Server. É parecido com o trace que o Profiler mostra , porém limitado. |
|
DBCC OUTPUTBUFFER |
Mostra o output atual que o banco retornou para um processo ( usuário ) no SQL Server. O resultado retornado é em hexadecimal... |
|
DBCC OPENTRAN |
Mostra informações sobre a transação mais velha ( mais tempo executando ) em um banco de dados. |
|
DBCC PROCCACHE |
Mostra informações sobre o Procedure Cache. |
|
DBCC SHOWCONTIG |
Mostra várias informações sobre os índices de uma tabela , inclusive o nível de fragmentação do índice. |
|
DBCC SHOW_STATISTICS |
Mostra as informações sobre as estatísticas de uma tabela. Estatísticas são muito importantes para a melhora de performance. |
|
DBCC SQLPERF |
Informações sobre tamanho do Log dos bancos de dados. |
|
DBCC TRACESTATUS |
Mostra a situação dos flags de trace que foram setados com o DBCC TRACEON. Estes traces controlam configurações internas do SQL Server |
|
DBCC USEROPTIONS |
Mostra várias informações referentes à conexão do usuário. |
4. Comandos de validação
Checagem da “saúde” de alguns objetos do banco de dados como tabelas, valores das colunas IDENTITY e constraints. Comandos:
|
DBCC CHECKALLOC |
Verifica o espaço para as estruturas de alocações internas do SQL Server. Permite alguns reparos em caso de erro. |
|
DBCC CHECKCATALOG |
Somente checa a consistência de algumas tabelas de sistema do SQL Server ( que compõem o Database Catalog ). Não faz reparos |
|
DBCC CHECKCONSTRAINTS |
Checa os relacionamentos de uma determinada constraint no banco de dados. Não faz reparos. |
|
DBCC CHECKDB |
Verifica erros de alocação e de consistência em vários objetos do banco de dados. Pode efetuar reparos importantes em caso de erro. |
|
DBCC CHECKFILEGROUP |
Muito parecido com o DBCC CHECKDB , porém só faz a verificação no nível do filegroup de um database. Não faz reparos |
|
DBCC CHECKIDENT |
Chega e corrige , caso necessário , valores de colunas que possuem a propriedade IDENTITY. Pode inclusive resetar o valor inicial ( seed ) da coluna que possui a propriedade IDENTITY. |
|
DBCC CHECKTABLE |
Checa e corrige a integridade das páginas de dados , índices , ntext , text e image para uma tabela ou uma indexed view |
|
DBCC NEWALLOC |
Idêntica à DBCC CHECKALLOC. Foi mantida por compatibilidade. |
Geralmente após a execução de qualquer comando DBCC , obtemos a seguinte mensagem:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Isso é meio vago, mas tudo bem pois indica que o comando foi executado sem problemas. Alguns comandos podem gerar um output interessante, como o DBCC USEROPTIONS. Podemos armazenar este output em uma tabela e depois consultar o resultado do comando armazenado na tabela. Por exemplo:
/* Criando a tabela que irá armazenar o output. As colunas desta tabela dependem do comando DBCC que for utilizado. */
CREATE
TABLE OUTPUT_DBCC
(
OPCAO VARCHAR(35) NOT NULL,
VALOR VARCHAR(35) NOT NULL
)
/*
Inserindo os dados de DBCC USEROPTIONS na tabela , através
da instrução EXEC */
INSERT INTO OUTPUT_DBCC(OPCAO,VALOR)
EXEC('DBCC USEROPTIONS')
/*
Verificando os dados */
SELECT OPCAO , VALOR
FROM OUTPUT_DBCC
Todos os comandos das quatro categorias listados acima são amplamente documentados no Books OnLine, inclusive com exemplos de uso e situações nas quais eles podem ajudar.
Além das quatro categorias de comandos DBCC descritas acima, ainda temos alguns comandos não documentados pela Microsoft. Estes comandos DBCC não foram documentados por não serem de uso geral e por precaução: algum usuário descuidado pode acabar enviando um comando que pode causar um grande estrago no banco de dados.
Como não existe documentação oficial sobre estes comandos DBCC, quem quiser se aprofundar mais sobre eles eu recomendo os seguintes artigos publicados na web:
Some Useful Undocumented SQL Server 2000 DBCC Commands
http://www.sql-server-performance.com/ac_sql_server_2000_undocumented_dbcc.asp
Undocumented SQL Server 7.0 DBCC Commands
http://www.swynk.com/friends/achigrik/DBCC70.asp
Abraço galera, e até a semana que vem!
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.