Segunda-feira, 20 de maio de 2002 às 01h59

Comandos DBCC no SQL Server

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.
Pessoal, nesta semana nos vamos dar uma olhada nos comandos DBCC do SQL Server.

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 (FREE)

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!

Nenhum comentário até agora

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Mauro Pichiliani é mestre em computação, possui as certificações MCP, MCDBA, MCT e MCTS e atua como consultor de banco de dados com enfoque na área de tunning.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.