ID do artigo: 209137 - Última revisão: sexta-feira, 18 de novembro de 2005 - Revisão: 4.1

Como solucionar problemas e reparar um banco de dados do Jet 4.0 danificado no Access 2000

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo foi publicado anteriormente em BR209137
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 2002 ou o Access 2003, consulte 283849  (http://support.microsoft.com/kb/283849/ ) .

Nesta página

Expandir tudo | Recolher tudo

Sumário

Fatores referentes ao ambiente podem danificar o arquivo do banco de dados. Os sintomas de um banco de dados corrompido podem variar de "#Deleted" sendo exibido em determinados registros à impossibilidade de abrir um dos objetos do banco, até a completa impossibilidade de abrir o arquivo no Access. O utilitário Compactar e Reparar do Microsoft Access é uma ferramenta útil que pode ser usada na recuperação e otimização de arquivos do banco de dados do Microsoft Access 2000. Esse artigo descreve esse utilitário do Access 2000 e apresenta outras formas de reparar bancos de dados danificados. Além disso, são fornecidas informações sobre a possível causa desse dano.

Mais Informações

Embora as etapas descritas neste artigo normalmente dêem certo na recuperação dos arquivos de banco de dados danificados, para proteger os dados, você deve criar uma cópia de backup do arquivo de banco de dados com a maior freqüência possível.

O Utilitário Compactar e Reparar

O utilitário Compactar libera espaço vazio em um banco de dados já existente. Ele faz isso, criando um novo banco de dados de destino e copiando os objetos do antigo banco de dados para o novo. Se você optar por compactar o banco de dados com o nome do banco de dados original em vez de um novo banco de dados, o utilitário Compactar cria um banco de dados temporário, exporta todos os objetos 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 com o nome de banco de dados original.

O utilitário Reparar tenta reparar apenas as tabelas, as consultas e os índices do banco de dados. O utilitário não tenta reparar formulários, relatórios, macros ou módulos danificados.

A seguinte lista relaciona as ações executadas pelo utilitário Compactar:
  • Reorganiza as páginas da tabela para que elas permaneçam nas páginas de banco de dados adjacentes.

    Isso melhora o desempenho porque a tabela não fica mais fragmentada no banco de dados.
  • Recupera o espaço não usado que é criado por exclusões de objetos e registros.

    Quando objetos ou registros são excluídos do banco de dados, o espaço ocupado por eles é marcado como disponível para novas inclusões no banco de dados. Porém, o tamanho do banco de dados nunca diminui a menos que seja compactado. Para bancos de dados em que objetos e registros sejam freqüentemente adicionados, excluídos e atualizados, a compactaçãodeve ser feita com freqüência.
  • 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 a sua compactação, 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 a compactação, o valor será 51 quando o próximo registro for adicionado. Lembre-se de que isso acontece mesmo com registros contendo valores maiores do que 50 que foram adicionados anteriormente, mas excluídos antes da compactação.
  • Gera novamente as estatísticas da tabela usadas no processo de otimização de consultas.

    Essas estatísticas podem ficar desatualizadas com o passar do tempo. Isso normalmente acontece se as transações forem revertidas, ou se o banco de dados não foi fechado corretamente por conta de uma queda de energia ou uma falha ao sair do programa por completo, usando o Microsoft Jet antes de desligar o computador.
  • Sinaliza todas as consultas para que elas sejam recompiladas na próxima vez em que a consulta for executada.

    Isso é importante porque as estatísticas do banco de dados podem ser alteradas e uma consulta já compilada pode ter um plano de consulta impreciso.

Diretrizes importantes para a execução do utilitário Compactar e Reparar

Antes de poder executar o utilitário Compactar e Reparar em um banco de dados, as seguintes condições devem ser atendidas:
  • É necessário fazer o logon com uma conta que tenha permissões de segurança Modificar design ou Administrador para todas as tabelas no banco de dados.
  • Deve haver espaço suficiente em disco tanto para a versão original quanto para a compactada do banco de dados, mesmo que o banco de dados seja compactado por meio da interface de usuário do Microsoft Access 2000 com o mesmo nome de arquivo.

    O banco de dados reparado ou compactado só será renomeado como o banco de dados original quando a compactação estiver concluída.
  • Outros usuários não devem ficar com o banco de dados aberto.

    Quando compactado, um banco de dados deve ser aberto em modo exclusivo pelo Microsoft Jet para impedir que outros usuários acessem e modifiquem-no durante o processo.

Recuperando um banco de dados danificado

As seguintes etapas descrevem um método geral, que pode ser usado no reparo de um banco de dados danificado:
  1. Instale o service pack mais recente do Microsoft Jet.

    Isso garante que você tenha as últimas correções para o Microsoft Jet. Para obter informações adicionais sobre como baixar o service pack mais recente do Jet 4.0, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    239114  (http://support.microsoft.com/kb/239114/ ) Como obter o service pack mais recente para o mecanismo de banco de dados Microsoft Jet 4.0
    Caso trabalhe em um ambiente de rede, você deve instalar o service pack mais recente do Microsoft Jet em todos os computadores cliente. Não é necessário instalar o service pack do Microsoft Jet no servidor de arquivos de rede a menos que ele também execute um ou mais aplicativos que utilizem o Microsoft Jet.
  2. Faça uma cópia de backup do arquivo do banco de dados danificado (.mdb).
  3. Exclua o arquivo .ldb se ele estiver presente. É preciso fechar o arquivo .mdb correspondente antes de excluir o arquivo.

    O arquivo .ldb é usado para determinar quais registros estão bloqueados em um banco de dados compartilhado e por quem estão bloqueados. Se um banco de dados estiver aberto para uso compartilhado, o arquivo .ldb será criado com o mesmo nome do banco de dados correspondente (.mdb). Por exemplo, se você abrir (para uso compartilhado) o banco de dados de exemplo Northwind.mdb na pasta C:\Msoffice\Access, será criado um arquivo chamado Northwind.ldb automaticamente na mesma pasta. O arquivo .ldb é automaticamente excluído após o último usuário fechar o banco de dados, com duas exceções:

    • quando o último usuário não tem permissões de exclusão na pasta que contém o arquivo .mdb
    • quando o banco de dados está corrompido
    O arquivo .ldb contém uma lista de usuários com o banco de dados aberto.

    Ao solucionar problemas para descobrir a causa do dano do banco de dados, talvez seja preciso, em alguns casos, saber quem fez o logon no banco de dados. Com o Microsoft Visual Basic for Applications no Access 2002, é possível obter uma lista dos usuários que fizeram logon em um determinado banco de dados. Para obter informações adicionais sobre como fazer isso e visualizar um código de exemplo, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    198755  (http://support.microsoft.com/kb/198755/PT-BR/ ) Como Verificar quem se logou ao banco de dados com o Jet UserRoster no Access 2000
  4. Execute o utilitário Compactar e Reparar da seguinte forma:
    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 de, clique no arquivo que deseja compactar e 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.
  5. Se as etapas anteriores falharem ao 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.

    Lembre-se de que não é possível importar páginas de acesso a dados com o Assistente para importação. Na verdade, é preciso abrir uma página de acesso a dados já existente no novo banco de dados. Para fazer isso, execute as seguintes etapas:
    1. Na janela de banco de dados, clique em Páginas em Objetos.
    2. Clique no botão 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.
  6. Se o dano estiver em uma tabela e as etapas anteriores não a recuperarem, tente o seguinte:

    1. No Microsoft Access 2000, exporte a tabela para um arquivo ASCII (texto delimitado). Para obter informações adicionais sobre esse tópico, pesquise pela frase "texto delimitado" e visualize o tópico "Exportar dados ou objetos de banco de dados", usando o Índice da 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 seus possíveis relacionamentos.
    5. Se estiver usando um processador de texto, examine o arquivo ASCII, procurando dados incorretos ou estranhos e remova esses registros. Salve o arquivo em um formato arquivo de texto ASCII.
    6. Reimporte o arquivo ASCII na nova tabela recriada. Para obter informações adicionais sobre esse tópico, pesquise pela frase "texto delimitado" e visualize o tópico "Importar dados ou objetos de banco de dados", usando o Índice da Ajuda do Microsoft Access.
    7. Insira novamente os registros que você foi forçado a excluir.
  7. Se estiver em um formulário ou relatório, o dano 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 importá-lo a partir da cópia de backup do 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. É preciso recriar todos os controles, já que não há como informar quais controles estão danificados.
  8. Se estiver em uma macro ou módulo, o dano pode estar na macro ou no próprio módulo ou no conteúdo 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 o conteúdo da macro ou módulo original.
    • O dano pode incluir caracteres diferentes de 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 no conteúdo da macro ou no próprio módulo, crie uma nova macro ou módulo e recrie o conteúdo 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 for este o caso, é preciso restaurar o último backup ou recriar o banco de dados.

Como opção 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 os grupos de notícias da Internet do Microsoft Access, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
150057  (http://support.microsoft.com/kb/150057/PT-BR/ ) ACC: Grupos de notícias do Microsoft Access disponíveis na Internet

Causas mais comuns de danos no arquivo .mdb

Há quatro causas principais de danos em arquivos .mdb do Access/Jet.

Banco de dados é suspeito/corrompido por conta de uma interrupção na operação de gravação

O desligamento correto, concluído ao clicar em Sair ou Fechar no menu Arquivo, é altamente recomendável. No entanto, se um banco de dados estiver aberto e gravando dados quando o Access for desligado incorretamente, o mecanismo do banco de dados Jet pode indicar o arquivo como suspeito/corrompido. Isso poderá acontecer se o computador for desligado manualmente sem que o Windows seja desligado ou se a energia elétrica acabar. Outras situações podem não desligar o Access, embora ainda possam interferir na gravação de dados no disco enquanto o banco de dados estiver aberto. Isso pode ocorrer, por exemplo, quando as redes colidem com os dados ou quando as unidades de disco funcionam mal. Se houver qualquer uma dessas interrupções, o Jet pode marcar o banco de dados como possivelmente corrompido.

Quando começa uma operação de gravação, o Jet define um sinalizador e o redefine quando a operação está completa. 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 assim, ao compactar ou reparar, ou ambos, você normalmente restaura o banco de dados. Felizmente, há formas de determinar que usuário e estação foram responsáveis por tornar o arquivo suspeito. Consulte o tópico "Como determinar que usuários/estações de trabalho tornam o arquivo sinalizado como suspeito" posteriormente neste artigo para determinar que usuários ou estações de trabalho, ou ambos, podem causar a indicação do arquivo como suspeito pelo Jet.

Hardware de rede com falhas

Nesse caso, o dano no arquivo não envolve o mecanismo Jet. Na verdade, o arquivo está literalmente corrompido por alguma causa externa. 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 costuma ser indicada por arquivos .mdb que não podem ser restaurados pelo uso da compactação, reparo ou Jetcomp. O dano no hardware costuma ocorrer até que o hardware responsável seja reparado ou substituído.

Abrindo e salvando o arquivo .mdb em outro programa

Não há como recuperar um arquivo .mdb aberto e salvo em um programa diferente. Por exemplo, o Microsoft Word permite a abertura de um banco de dados do Access e a sua gravação. (Não há sentido em abrir um arquivo .mdb em outro aplicativo, já que são exibidos apenas caracteres estendidos.) Salvar o arquivo dessa forma faz o arquivo .mdb solicitar a você uma senha do banco de dados ao tentar abri-lo no Access. Isso ocorre mesmo sem o arquivo jamais ter sido protegido por senha no Access. A solicitação de senha ocorre em casos como esse porque é no primeiro intervalo de bytes verificado pelo Access ao abrir o arquivo que pode estar a senha do banco de dados. Caso esse byte tenha dados corrompidos, o Access trata o arquivo como protegido por senha. Nesse caso, mesmo se houvesse uma forma de evitar a solicitação de senha, o banco de dados ainda assim permaneceria irrecuperável porque a estrutura binária fica misturada e ilegível para o Access. No caso, a única solução é recuperar uma cópia de backup do arquivo. Para obter informações adicionais sobre esse problema, clique no número abaixo para consultar o artigo na Base de Dados de Conhecimento da Microsoft:
243895  (http://support.microsoft.com/kb/243895/PT-BR/ ) ACC2000: A senha do banco de dados aparece embora nunca tenha sido definida

Versões incompatíveis do mecanismo de banco de dados Jet

Caso execute versões diferentes do mecanismo de banco de dados Jet no ambiente, também é possível causar danos em um banco de dados do Access. Versões diferentes do Jet gravam no banco de dados de maneira diferente, o que pode ser a causa dos danos em um banco de dados.

Como determinar que usuários/estações de trabalho tornam o arquivo sinalizado como suspeito

Ao solucionar problemas para descobrir a causa dos danos em um banco de dados, às vezes, talvez seja necessário observar quem fez logon no banco de dados. Com o Microsoft Visual Basic for Applications no Access 2002, é possível obter uma lista dos usuários que fizeram logon em um determinado banco de dados.

Para obter informações adicionais sobre como fazer isso e visualizar um código de exemplo, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
198755  (http://support.microsoft.com/kb/198755/PT-BR/ ) COMO: Verificar quem se logou ao banco de dados com o Jet UserRoster no Access 2000

Métodos que podem ser usados para evitar danos

  • Evite a queda de energia durante as gravações de banco de dados. Se houver uma queda de energia durante as gravações no banco de dados, ele pode ficar em estado suspeito.
  • Evite quedas de conexões de rede.
  • Evite o fechamento incorreto das conexões do Microsoft Jet, como queda de energia, desligamento manual, ou usando o Gerenciador de Tarefas fechar o aplicativo.
  • Quando estiver programando, feche todos os objetos DAO e ADO abertos. Entre os exemplos estão os objetos Conjunto de registros, QueryDef, TableDef e Banco de dados.
  • Erros graves de sistema quase sempre causam o fechamento incorreto. Caso o banco de dados esteja propenso a erros fatais, será preciso resolvê-los antes que o banco de dados fique danificado demais para ser aberto ou recuperado.Para obter informações adicionais sobre erros de exceção fatal, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    208488  (http://support.microsoft.com/kb/208488/PT-BR/ ) ACC2000: Como solucionar problemas com falhas de página inválida no Access 2000
  • Compacte sempre o banco de dados.
  • Não execute IPX em um servidor com Windows NT onde os bancos de dados do Jet estão localizados na rede e o cliente é o Microsoft Windows 95 com IPX/SPX (Internet Packet Exchange/Sequenced Packet Exchange). Na verdade, execute o TCP/IP no servidor com Windows NT e uma pilha de protocolos dupla de 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 num loop (entre 40.000 e 1.000.000 de operações de abrir e fechar consecutivas).
  • Verifique se o service pack mais recente do Microsoft Jet está instalado em todos os computadores cliente com acesso ao arquivo do banco de dados.

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 um utilitário disponível para download que também possa reparar um banco de dados danificado, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
273956  (http://support.microsoft.com/kb/273956/PT-BR/ ) ACC2000: Utilitário Jet compact disponível no Centro de download
Para obter informações adicionais sobre a solução de problemas de bancos de dados em versões anteriores do Access, clique nos números abaixo para ler os artigos na Base de Dados de Conhecimento da Microsoft:
279334  (http://support.microsoft.com/kb/279334/PT-BR/ ) ACC97: Como reparar um banco de dados danificado do Jet 3.5
109953  (http://support.microsoft.com/kb/109953/PT-BR/ ) ACC: Como solucionar problemas/reparar bancos de dados Jet 3.0 e anteriores

A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbcorrupt kbrepair kbtshoot kbdatabase kbhowto KB209137