Como solucionar problemas e reparar um banco de dados danificado do Access 2002 ou posterior

Traduções deste artigo Traduções deste artigo
ID do artigo: 283849 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi publicado anteriormente em BR283849
Iniciante: Requer conhecimento da interface de usuário em computadores de usuário único.

Este artigo se aplica somente a um banco de dados do Microsoft Access (.mdb).

Para obter a versão deste artigo para o Microsoft Access 97, consulte 279334.
Para obter a versão deste artigo para o Microsoft Access 2000, consulte 209137.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Existem várias coisas que podem acontecer, tanto dentro quanto fora do Access, que podem deixar o arquivo de banco de dados danificado (corrompido). Os sintomas de um banco de dados corrompido podem variar de #Deleted aparecendo em determinados registros, até a imposibilidade de abertura de um dos objetos de banco de dados e da abertura completa de um arquivo de banco de dados do Access. O utilitário Compactar e Reparar no Microsoft Access é uma ferramenta útil na tentativa de otimizar ou reparar arquivos de banco de dados do Microsoft Access. Este artigo descreve esse utilitário do Access e oferece alternativas adicionais na tentativa de reparar bancos de dados danificados. Esse artigo também fornece informações sobre as possíveis causas de danos no bancos de dados.

Observação O Microsoft Jet, o mecanismo de banco de dados usados no Microsoft Access, é um sistema de banco de dados de arquivo compartilhado. Quando o Microsoft Jet é usado em um ambiente multiusuário, vários processos de clientes usam operações de ler, gravar e bloquear arquivo em um banco de dados compartilhado. Por causa dos múltiplos processos de clientes lerem e gravarem o mesmo banco de dados e por causa do Jet não usar um log de transação (como acontece com a maior parte dos sistemas de bancos de dados avançados, como o SQL Server), não é possível evitar de forma confiável qualquer e toda corrupção de banco de dados. Caso seja necessário um sistema de banco de dados que seja executado 24 horas por dia, sete dias na semana em um ambiente multiusuário, a Microsoft recomenda o uso de um sistema de banco de dados cliente/servidor que suporte transações duráveis, como o Microsoft SQL Server.

Mais Informações

Embora as etapas descritas neste artigo geralmente tenham êxito na recuperação de arquivos de banco de dados danificados, para proteger os dados, a Microsoft recomenda que você crie uma cópia de backup do arquivo de banco de dados com a maior freqüência possível.

Descrição do utilitário Compactar e Reparar

Compactando um banco de dados

Ao compactar um banco de dados, o processo de compactação irá recuperar espaço não utilizado em um banco de dados criado pelas exclusões de objeto e registro. Esse processo cria um novo banco de dados de destino e copia cada objeto do antigo banco de dados para o novo banco de dados. Se você escolher compactar o banco de dados para o nome do banco de dados original em vez de um novo banco de dados, o processo de compactação cria um banco de dados temporário, exporta todos os objetos a partir do banco de dados original para o banco de dados temporário, remove o banco de dados original e renomeia o banco de dados temporário para o nome de banco de dados original.

Há a seguinte lista de ações executadas pelo processo de compactação:
  • Esta lista reorganiza as páginas de uma tabela para que elas residam em páginas de banco de dados adjacentes. Isso melhora o desempenho porque a tabela não fica mais fragmentada no banco de dados.
  • Isso recupera o espaço não utilizado criado por exclusões de objetos e registros. Quando objetos ou registros são excluídos a partir de banco de dados, o espaço que eles ocupavam é marcado como disponível para novas adições ao banco de dados. Porém, o tamanho do banco de dados nunca é reduzido, a menos que o banco de dados seja compactado. Bancos de dados em que objetos e registros sejam freqüentemente adicionados, excluídos e atualizados, devem ser compactados com freqüência.
  • Isso redefine o incremento de campos AutoNumeração para que o próximo valor alocado seja um a mais do que o valor mais alto nos registros remanescentes. Por exemplo, se todos os registros no banco de dados forem excluídos, após compactar o banco de dados, o valor no campo AutoNumeração será 1 quando o próximo registro for adicionado. Se o valor de AutoNumeração remanescente mais alto no banco de dados for 50, após compactar o banco de dados, o valor no campo AutoNumeração será 51 quando o próximo registro for adicionado. Observe que isto é verdadeiro mesmo se os registros contendo valores maiores que 50 tenham sido adicionados anteriormente mas foram excluídos antes da compactação.
  • Isso regenera as estatísticas da tabela que são usadas no processo de otimização de consultas. Essas estatísticas podem ficar desatualizadas com o passar do tempo. Isto geralmente acontece se as transações são desfeitas ou se o banco de dados não é fechado corretamente por causa de uma queda de energia inesperada ou porque o computador é desligado antes de o programa que usa o Microsoft Jet ter sido alterado para ser encerrado por completo.
  • Ele sinaliza todas as consultas para que elas sejam recompiladas na próxima vez em que a consulta for executada. Isto é importante porque as estatísticas do banco de dados podem ser alteradas e uma consulta compilada anterior pode ter um plano de consulta impreciso.
Reparando um banco de dados

O processo de reparação tenta reparar apenas as tabelas, as consultas e os índices no banco de dados. Ele não tenta reparar formulários, relatórios, macros ou módulos danificados.

O que verificar antes de executar o utilitário Compactar e Reparar

Antes de executar o utilitário Compactar e Reparar em um banco de dados, verifique o seguinte:
  • Verifique se você tem espaço livre de armazenamento suficiente no disco rígido para as versões original e compactada de banco de dados do Access. Isto significa que você tem que ter espaço de armazenamento livre para pelo menos duas vezes maior que o banco de dados do Access nesta unidade. Caso seja necessário deixar algum espaço livre, exclua qualquer arquivo não necessário desta unidade, ou, se possível, mova o banco de dados do Access para uma unidade que tenha mais espaço livre.
  • Verifique se você tem tanto permissões de Abrir/Executar quanto Abrir em Modo exclusivo para o banco de dados do Access. Se você é o proprietário de banco de dados, certifique-se de definir essas permissões. Se você não é proprietário de banco de dados, contate o proprietário para saber se é possível obter essas permissões.
  • Verifique se nenhum usuário está com o banco de dados do Access aberto.
  • Verifique se o banco de dados do Access não está localizado em um compartilhamento de rede somente leitura ou tem o atributo de arquivo definido para somente Leitura.

Etapas para tentar reparar um banco de dados danificado

As seguintes etapas descrevem um método geral que você pode usar na tentativa de reparar um banco de dados danificado:
  1. Faça uma cópia do arquivo de banco de dados danificado (.mdb) para que você tenha um backup.
  2. Exclua o arquivo .ldb se ele estiver presente. Você tem que fechar o arquivo .mdb correspondente antes de excluir o arquivo .ldb.

    O arquivo .ldb é usado para determinar quais registros estão bloqueados em um banco de dados compartilhados e por quem. Se um banco de dados estiver aberto para uso compartilhado, o arquivo .ldb é criado com o mesmo nome de banco de dados correspondente (.mdb). Por exemplo, caso abra o banco de dados de exemplo Northwind.mdb para uso compartilhado na pasta C:\Msoffice\Access, um arquivo nomeado Northwind.ldb é criado automaticamente na mesma pasta. O arquivo .ldb é excluído automaticamente após o último usuário ter saído do banco de dados com essas duas exceções -- quando o último usuário não tiver permissões de exclusão na pasta que contém o arquivo .mdb ou quando o banco de dados estiver corrompido. O arquivo .ldb contém uma lista de usuários com o banco de dados aberto.
  3. Execute o utilitário Compactar e Reparar. Para fazer isso, execute estas etapas:
    1. Se o banco de dados estiver aberto, feche-o.
    2. No menu Ferramentas, aponte para Utilitários de bancos de dados e clique em Compactar e reparar banco de dados.
    3. Na caixa de diálogo Compactar banco de dados a partir de , selecione o arquivo que deseja compactar e clique em Compactar.
    4. Na caixa de diálogo Compactar banco de dados em , insira um novo nome de arquivo e clique em Salvar.

      Se Compactar e Reparar não tiver êxito, será exibida uma mensagem indicando isso. Isso significa que o dano é tão grave que não pode ser corrigido.
  4. Se as etapas anteriores falharem para recuperar o banco de dados danificado, tente criar um novo banco de dados e importar os objetos, um por um, a partir de banco de dados antigo para o novo. Recrie os relacionamentos. Essa técnica resolve problemas de tabelas de sistemas danificadas no banco de dados.

    Observação Não é possível importar as páginas de acesso com o Assistente de importação. Em vez disso, abra uma página de acesso aos dados existentes no novo banco de dados. Para fazer isso, execute estas etapas:
    1. Na janela de banco de dados, clique em Páginas em Objetos.
    2. Clique em Novo.
    3. Na caixa de diálogo Nova página de acesso a dados, clique em Página da Web existente e clique em OK.
    4. Na janela Localizar página da Web, vá para o local da página de acesso a dados.
  5. Se o dano estiver em uma tabela e as etapas anteriores não a recuperarem, tente o seguinte:
    1. No Microsoft Access, exporte a tabela para um arquivo ASCII (texto delimitado). Para obter mais informações consulte o tópico "Exportar dados ou objetos de banco de dados" em Ajuda do Microsoft Access.
    2. Exclua quaisquer relacionamentos associados a esta tabela e exclua a tabela a partir de banco de dados.
    3. Compacte o banco de dados.
    4. Recrie a tabela e quaisquer relacionamentos que ela tenha.
    5. Usando um processador de texto, examine o arquivo ASCII procurando por dados incorretos ou estranhos e remova esses registros. Salve o arquivo em um formato de arquivo de texto ASCII.
    6. Reimporte o arquivo ASCII na nova tabela recriada. Para obter mais informações sobre este tópico, pesquise no índice da Ajuda do Microsoft Access pela palavra "delimitado" e consulte o tópico "Importar ou objetos e dados vinculdados".
    7. Reinisira quaisquer registros que você foi forçado a excluir.
  6. Se o dano estiver em um formulário ou relatório, este pode estar tanto no formulário quanto no próprio relatório ou em um ou mais controles contidos no formulário ou no relatório. É possível excluir o formulário ou relatório e importar este a partir da cópia de backup de banco de dados ou usar uma das seguintes opções:
    • Se o dano estiver no formulário ou no próprio relatório, crie um novo formulário ou relatório e copie os controles a partir do formulário ou relatório original.
    • Se o dano estiver em um controle do formulário ou do relatório, crie um novo formulário ou relatório e recrie os controles no novo formulário ou relatório. É melhor recriar todos os controles, já que não há como informar quais controles estão danificados.
  7. Se o dano estiver em uma macro ou em um módulo, ele pode estar na macro ou no próprio módulo ou nos conteúdos da macro ou do módulo. É possível excluir a macro ou o módulo e importá-los a partir da cópia de backup de banco de dados ou usar uma das seguintes opções:
    • Se o dano estiver na macro ou no próprio módulo, crie uma nova macro ou módulo e copie os conteúdos da macro ou módulo original.
    • O dano poderia involver caracteres não ASCII incorporados ao módulo. Salve o módulo como um arquivo de texto, remova quaisquer dados incorretos ou estranhos e recarregue o arquivo de texto em um novo módulo.
    • Se o dano estiver nos conteúdos da macro ou no próprio módulo, crie uma nova macro ou módulo e recrie os conteúdos da macro ou do módulo original.
Se não puder reparar o banco de dados executando essas etapas, é provável que o banco de dados danificado não possa ser reparado. Se este for o caso, restaure o último backup de banco de dados ou recrie o banco de dados.

Como uma alternativa final, alguns consultores podem fornecer um serviço de reparo de banco de dados do Microsoft Access. Por este ser um serviço especializado, a maneira mais eficiente de localizar um consultor é publicar uma mensagem no grupo de notícias da Internet "Grupos de usuários ou outros", que tem os seguintes endereços do grupo de notícias:
microsoft.public.access.3rdpartyusrgrp
Para obter informações adicionais sobre grupos de notícias da Internet do Microsoft Access, leia o seguinte artigo na Base de Dados de Conhecimento da Microsoft: Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
287756 O campo Autonumeração não é redefinido após compactar um banco de dados

Por que os arquivos .mdb ficam corrompidos?

Há três razões principais por que um arquivo .mdb pode ficar corrompido, são elas:
  • Operação de gravação interrompida
  • Hardware de rede com defeito
  • Abrindo e salvando o arquivo .mdb em um outro programa

Operação de gravação interrompida

Sempre encerre o Access corretamente clicando em Sair ou em Fechar no menu Arquivo. Se um banco de dados estiver aberto e gravando dados quando o Access é fechado de forma irregular, o mecanismo de banco de dados Jet pode marcá-lo como suspeito/corrompido. Isto pode acontecer caso desligue manualmente o computador sem primeiro fechar o Windows ou caso haja queda de energia. Podem ocorrer outras situações que não fecham o Access, mas que ainda podem interferir ao gravar os dados do Jet para o disco enquanto o banco de dados está aberto. Isto pode ocorrer, por exemplo, quando as redes colidem com os dados ou quando as unidades de disco funcionam mal. Se qualquer uma dessas interrupções ocorrerem, o Jet pode marcar o banco de dados como potencialmente corrompido.

Quando o Jet começa uma operação de gravação, ele define um sinalizador e redefine o sinalizador quando a operação é concluída. Se uma operação de gravação for interrompida, o sinalizador permanece definido. Quando você tenta abrir o banco de dados novamente, o Jet determina se o sinalizador está definido e relata que o banco de dados está corrompido. Na maioria dos casos, os dados no banco de dados não estão de fato corrompidos, mas a definição do sinalizador alerta o Jet de que a corrupção pode ter ocorrido. Em casos como este, compactar ou reparar o banco de dados (ou ambos) geralmente pode restaurar o banco de dados. Felizmente, existem maneiras de se determinar qual usuário e estação foram responsáveis por tornar o arquivo suspeito. Com o Microsoft Visual Basic para aplicativos no Access 2002, você pode enviar uma lista de usuários que estão conectados a um banco de dados específico.
208449 Grupos de notícias do Microsoft Access disponíveis na Internet
Para obter mais informações sobre como fazer isso, consulte a seção "Como determinar quais usuários/estações fazem com que o arquivo seja marcado como suspeito" posterior neste artigo.

Hardware de rede com defeito

Algumas vezes a corrupção pode ocorrer sem que o mecanismo de banco de dados do Jet esteja envolvido. Por exemplo, o hardware de rede com defeito pode fazer com que um arquivo fique corrompido. A causa pode ser um ou mais links na cadeia do hardware entre o computador em que o banco de dados reside e o computador que tem o banco de dados aberto. Esta lista inclui placas de rede, cabos de rede, roteadores e hubs, mas não se limita apenas a esses.

A corrupção com base em hardware geralmente é indicada por arquivos .mdb que não podem ser restaurados através do uso da compactação, reparo ou Jetcomp. A corrupção de hardware geralmente irá ocorrer até que o hardware responsável seja reparado ou substituído.

Abrir e salvar o arquivo .mdb em um outro programa

Não há como recuperar um arquivo .mdb que foi aberto e salvo em um programa diferente. Por exemplo, é possível abrir e salvar um arquivo .mdb no Microsoft Word, mas se fizer isso, o arquivo .mdb nunca poderá ser recuperado, exceto a partir de uma cópia de backup. Se você acidentalmente abrir um arquivo .mdb em um outro aplicativo, certifique-se de não salvá-lo. Realmente não existe nenhum propósito em abrir um arquivo .mdb em outro aplicativo, porque se você fizer isso, tudo o que verá é uma série de caracteres aparentemente aleatórios.

Etapas que você pode adotar para evitar corrupção

Para evitar corrupção de banco de dados:
  • Evite queda de energia durante as gravações de banco de dados. A queda de energia durante gravações de banco de dados pode deixar o banco de dados em estado corrompido.
  • Evite quedas de conexões de rede.
  • Evite o encerramento irregular das conexões do Microsoft Jet como queda de energia, desligamento manual, fazer com que o Gerenciador de tarefas desligue o aplicativo e assim por diante.
  • Quando você estiver programando, feche todos os objetos DAO e ADO que tiver aberto. Entre os exemplos estão os objetos Conjunto de registros, QueryDef, TableDef e Banco de dados.
  • Erros graves de sistema quase sempre causam o encerramento irregular. Se o banco de dados estiver propenso a erros graves, você deve resolvê-los antes que o banco de dados fique danificado demais para ser aberto ou recuperado. Para obter informações adicionais sobre como fazer isto e o código de exemplo que você pode usar, clique no número do artigo abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    285822 Como determinar quem está conectado ao banco de dados usando o Microsoft Jet UserRoster no Access 2002.
    Para obter informações adicionais sobre erros graves de sistema, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    294301 ACC2002: Como solucionar erros graves de sistema no Access 2002 executado no Microsoft Windows 2000
  • Compacte o banco de dados com freqüência
  • Não execute IPX no Microsoft Windows NT Server no qual os bancos de dados do Jet estão localizados na rede e o cliente é o Microsoft Windows 95 com IPX/SPX. Em vez disso execute o TCP-IP no Windows NT Server e uma pilha de protocolo dupla do IPX e TCP-IP no cliente Win95. (Windows NT para Windows NT com IPX/SPX não irá causar o problema, nem o Novell para qualquer cliente.)
  • Evite um grande número de operações abrir e fechar em um loop (mais de 40.000 operações de abrir e fechar podem causar corrupção).

Observação especial sobre bancos de dados convertidos

Em versões do Access anteriores ao Access 2002, se ocorreram erros enquanto você estava convertendo um banco de dados para a versão atual, não havia uma maneira fácil de determinar quais objetos foram prejudicados e a corrupção notável possivelmente contida.

Quando o Microsoft Access 2002 ou posterior encontra erros ao converter um arquivo do Access, você pode visualizar um resumo desses erros abrindo a tabela de Erros de conversão no novo arquivo do Access. A tabela de Erros de conversão contém as seguintes colunas:

Tipo de objeto. O tipo de objeto de banco de dados no qual o Access encontrou um erro, ou "Banco de Dados" se o Access encontrar um erro que não seja específico a um tipo de objeto em particular.

Nome do objeto. O nome do objeto no qual o Access encontrou um erro. Porém, se o Access encontra um erro de compilação durante a conversão, o nome do módulo que contém o erro não é especificado.

Descrição do erro: Se necessário, pressione SHIFT+F2 para visualizar a descrição inteira do erro.

Referências

Para obter mais informações sobre como reparar o banco de dados, clique em Ajuda do Microsoft Access no menu Ajuda, digite reparar no Assistente do Office ou no Assistente de resposta e clique em Pesquisar para exibir o tópico.
Para obter informações adicionais sobre a solução de problemas de bancos de dados em versões anteriores do Access, clique no número do artigo abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
209137 Como diagnosticar e reparar um banco de dados do Jet 4.0 danificado
279334 Como reparar um banco de dados do Jet 3.5
109953 Como solucionar problemas/reparar banco de dados do Jet 3.0 e anteriores
284152 Como solucionar erros graves de sistema no Access 2002 executado no Windows Millennium

Propriedades

ID do artigo: 283849 - Última revisão: segunda-feira, 21 de junho de 2004 - Revisão: 6.1
A informação contida neste artigo aplica-se a:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Palavras-chave: 
kbcorrupt kbtshoot kbhowto KB283849

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com