none
Allocation errors e consistency errors apontados pelo comando DBCC CHECKDB RRS feed

  • Pergunta

  • Olá,

    Ao passar o comando DBCC CHECKDB só passando o nome do banco de parâmetro, ele informa no resultado que encontrou 4 allocation errors e 1 consistency error. Alguém saberia me dizer o que é um allocation error e o que é um consistency error? Eu gostaria de entender a gravidade desses problemas.

    Grata,
    Viviane
    quarta-feira, 8 de julho de 2009 13:14

Respostas

  • Bom Dia,

    Allocation Erros indica que há problemas na alocação dos blocos de dados. Se sua tabela for clusterizada, um bloco de dados tem a posição do bloco anterior e do bloco posterior. Ex:

    Bloco 2 - (Bloco Anterior é o 1 e o Bloco Posterior é o 3)
    Bloco 3 - (Bloco Anterior é o 2 e o Bloco Posterior é o 4)

    Além dessa informação, existem páginas especiais (GAM, IAM, SGAM, PFS, etc) que tem um mapa completo de páginas com uma informação do tipo

    Bloco 1, em seguida Bloco 2, em seguida Bloco 3 e em seguida Bloco 4

    Se ocorre algo que corrompa dados físicos seja o bloco de memória ou as páginas com as informações de ordem, podemos ter as páginas (GAM, IAM, SGAM, PFS, etc) com uma informação divergente da informação que existe no próprio bloco. Isso leva a inconsistência de alocação e o SQL Server pode não ser capaz de efetuar a leitura daquela página ou ainda recuperar a página errada em um SELECT.

    Erros de consistência significam que por conta de um problema físico podem haver violações de constraints como chaves primárias duplicadas, chaves estrangeiras apontando para registros inexistentes, etc.

    O fato é que não importa bem a razão do erro. Fisicamente o seu banco pode estar comprometido. Se tiver um backup recomendo utilizá-lo. Senão tiver, mapeie os objetos com erro (você pode verificá-los na saida do CHECKDB) e providencie uma correção.

    Costumo dizer que erros dessa natureza são como uma doença contagiosa. Se não forem tratados, outras páginas serão contaminadas até que o banco inteiro fique com problemas físicos e eventualmente apareça como SUSPECT. Se isso acontecer (e os backups também tiverem sido corrompidos), seus problemas podem ser muito maiores.

    Em tempo, se alguém pedir-lhe para rodar o DBCC com o REPAIR_ALLOW_DATA_LOSS não rode. Essa alternativa irá resolver o problema, mas poderá levar a perda de dados, pois, excluirá as páginas com problemas.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Certificados, Cross Database Ownership Chaining e Segurança
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!622.entry


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 8 de julho de 2009 15:08
    • Marcado como Resposta Vivaine segunda-feira, 13 de julho de 2009 20:57
    quarta-feira, 8 de julho de 2009 15:08

Todas as Respostas

  • Viviane,

    Allocation error informa o local físico que o banco de dados esta apresentando erros.

    Consistency error informação os erros de consistência existem no banco de dados.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 8 de julho de 2009 13:42
    Moderador
  • Bom Dia,

    Allocation Erros indica que há problemas na alocação dos blocos de dados. Se sua tabela for clusterizada, um bloco de dados tem a posição do bloco anterior e do bloco posterior. Ex:

    Bloco 2 - (Bloco Anterior é o 1 e o Bloco Posterior é o 3)
    Bloco 3 - (Bloco Anterior é o 2 e o Bloco Posterior é o 4)

    Além dessa informação, existem páginas especiais (GAM, IAM, SGAM, PFS, etc) que tem um mapa completo de páginas com uma informação do tipo

    Bloco 1, em seguida Bloco 2, em seguida Bloco 3 e em seguida Bloco 4

    Se ocorre algo que corrompa dados físicos seja o bloco de memória ou as páginas com as informações de ordem, podemos ter as páginas (GAM, IAM, SGAM, PFS, etc) com uma informação divergente da informação que existe no próprio bloco. Isso leva a inconsistência de alocação e o SQL Server pode não ser capaz de efetuar a leitura daquela página ou ainda recuperar a página errada em um SELECT.

    Erros de consistência significam que por conta de um problema físico podem haver violações de constraints como chaves primárias duplicadas, chaves estrangeiras apontando para registros inexistentes, etc.

    O fato é que não importa bem a razão do erro. Fisicamente o seu banco pode estar comprometido. Se tiver um backup recomendo utilizá-lo. Senão tiver, mapeie os objetos com erro (você pode verificá-los na saida do CHECKDB) e providencie uma correção.

    Costumo dizer que erros dessa natureza são como uma doença contagiosa. Se não forem tratados, outras páginas serão contaminadas até que o banco inteiro fique com problemas físicos e eventualmente apareça como SUSPECT. Se isso acontecer (e os backups também tiverem sido corrompidos), seus problemas podem ser muito maiores.

    Em tempo, se alguém pedir-lhe para rodar o DBCC com o REPAIR_ALLOW_DATA_LOSS não rode. Essa alternativa irá resolver o problema, mas poderá levar a perda de dados, pois, excluirá as páginas com problemas.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Certificados, Cross Database Ownership Chaining e Segurança
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!622.entry


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 8 de julho de 2009 15:08
    • Marcado como Resposta Vivaine segunda-feira, 13 de julho de 2009 20:57
    quarta-feira, 8 de julho de 2009 15:08