Comandos DBCC – DBCC CHECKDB 01

Agora que já vimos uma visão geral sobre os comandos DBCC, vamos focar em um que talvez seja o mais utilizado deste conjunto de comandos, o DBCC CHECKDB.

O DBCC CHECKDB faz parte dos comandos de validação e tem por finalidade, segundo o BOL: verificar a integridade lógica e física de todos os objetos no banco de dados especificado através da execução de uma série de operações. Entre estas operações (não são somente estas) estão a execução de outros 3 comandos DBCC: DBCC CHECKALLOC, DBCC CHECKTABLE e DBCC CHECKCATALOG.

Normalmente vemos as pessoas executarem este comando apenas quando encontram algum problema de corrupção em seu banco de dados, após alguma mensagem de erro, mas imagine que você irá fazer um backup para armazenar uma cópia válida de seu BD, de que adianta se esta estiver corrompida? Será que não seria interessante verificar a integridade do banco antes de realizar o backup e, caso encontrado algum problema, já efetuar as devidas correções e realizar um novo backup?

A sintaxe básica para este comando seria: DBCC CHECKDB(‘Nome_do_banco’);

Desta forma ele fará uma verificação de integridade em seu banco de dados e retornará uma série de informações e, caso haja alguma corrupção, mensagens sobre estas.

Você pode utilizar uma série de comandos opcionais para ajustar a execução do CHECKDB ao que necessita e uma das mais comuns é a opção "WITH NO_INFOMSGS", que faz com que o SQL Server não exiba as mensagens de informações que normalmente exibe com a execução deste comando.

Outra opção bastante utilizada é "WITH ALL_ERRORMSGS", que altera o padrão do SQL Server de exibir apenas as 200 primeiras mensagens de erro, fazendo com que este passe a exibir TODAS as mensagens de erro. Tal opção não é mais necessária desde o SQL Server 2005 SP3/SQL Server 2008 SP1, onde este comportamento passou a ser padrão.

As opções podem ser combinadas, então você poderia executar: DBCC CHECKDB(‘Nome_do_banco’) WITH NO_INFOMSGS, ALL_ERRORMSGS.

Vale lembrar que executar uma verificação de integridade em um banco de dados é um processo que tende a ser demorado e muito custoso em termos de disco e processador, então planeje bem os horários de execução deste comando antes de executá-lo em seus BDs de produção.

Caso você possua BDs muito grandes ou deseje realizar uma verificação menos pesada e mais frequente, existe a opção "PHYSICAL_ONLY", que executa apenas uma verificação da integridade física do BD, o que tende a ser interessante, desde que se tenha em mente que verificações completas são sempre necessárias e que esta opção não detecta, por exemplo, alguns dos tipos de falhas de hardware que possam vir a comprometer os dados.

Mas tudo bem, encontrei os problemas de corrupção de meus BDs, e agora o que faço? O CHECKDB também possui a opção "REPAIR_ALLOW_DATA_LOSS", que permite que este execute operações especiais para reparar o banco de dados em questão, mas existe o risco de perda de dados.

Agora que já conhecemos em linhas gerais o comando DBCC CHECKDB, no próximo artigo irei demonstrar outras situações um pouco menos comuns que podemos enfrentar com a execução deste.

Esse post foi publicado em DBCC. Bookmark o link permanente.

8 respostas para Comandos DBCC – DBCC CHECKDB 01

  1. Fabrício disse:

    Vladimir. Todos os dias realizo um clone das luns com os arquivo .mdf e .ldf das databases do meu servidor de produção para um servidor que fica D-1.Eu subo essas databases com um Atach no outro servidor. Se eu executar o comando DBCC CHECKDB nesse outro servidor para as mesmas databases de produção, ele retornaria um resultado igual ao que retornaria no servidor de produção?

  2. Vladimir Michel disse:

    Cara, não obrigatoriamente.Lembre que durante o processo de clonagem, por mais que seja pequena a chance, pode haver algum tipo de corrupção.Fora isso, pelo menos que eu lembre agora, acredito que o resultado seja igual sim.

  3. Felipe disse:

    Muito bom Vladimir.O DBCC CHECKDB sem dúvida é um ótimo recurso,muito bom o artigo.(Se não se importa estou te adicionando ao meu spaces)Valeu!

  4. Vladimir Michel disse:

    Olá Felipe, obrigado pelo elogio.Gostaria de continuar a série, até porque teve uma situação legal que vi outro dia e que gostaria de comentar, mas o tempo não está deixando (semana que vem acho que consigo!).E pode adicionar sim, sempre bom ter alguém pra trocar uma idéia.

  5. Fabrício disse:

    Entendi… Então, se tiver tudo ok na minha base clonada, a de produção também estará ok.Se ela tiver corrompida, ai eu testo a minha de produção pois pode ter sido corrompida no processo de clonagem. Assim, eu tiro essa carga de trabalho (DBCC) do meu servidor de produção…Obrigado

  6. Olá Vladimir, como vai?

    Me surgiu a dúvida sobre o DBCC CHECKDB e dei uma pesquisada na net. Gostaria que me tirasse essa dúvida. Esse comando é a penas informativo correto? Ou seja, preciso executa-lo em minhas bases de dados e acompanhar se há ou não mensagens de erro. Então, não tem sentido algum eu executa-lo e não acompanhar suas mesagens de retorno?

    Um forte abraço

    • magalhaesv disse:

      Poxa cara, meu blog (pra variar) ficou largado, então desculpa não ter respondido.

      Bem, realmente se você não acompanhar as mensagens dele não adianta executar. Após executá-lo ele vai te informar se há algum problema e até sugerir a ação seguinte caso haja corrupção (ele já fala, por exemplo, que você terá que usar no mínimo a opção ALLOW_DATA_LOSS).

      Então só use se você for analisar a saída do comando e tomar as devidas atitudes depois.

  7. Pingback: Automatizando a verificação de integridade de seus bancos de dados | Vladimir M. B. Magalhães – SQL Server DBA

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s