ACC97: Como reparar um banco de dados danificado do Jet 3.5

Traduções deste artigo Traduções deste artigo
ID do artigo: 279334 - Exibir os produtos aos quais esse artigo se aplica.
Moderado: Requer conhecimentos básicos de macro, codificação e interoperabilidade.

Para obter uma versão deste artigo do Microsoft Access 2.0/Jet 2.x e do Access 95/Jet 3.0, consulte 109953.

Para obter uma versão deste artigo para do Microsoft Access 2000/Jet4.0, consulte 209137.
Expandir tudo | Recolher tudo

Neste artigo

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 #Excluído aparecendo em certos registros a dificuldade para abrir um dos objetos no banco de dados e não conseguir abrir completamente um arquivo de banco de dados do Access. Os utilitários Reparar e Compactar no Microsoft Access são ferramentas úteis para a recuperação e a otimização dos arquivos de banco de dados do Microsoft Access. Este artigo descreve esses utilitários e oferece alternativas adicionais para a recuperação de bancos de dados danificado. Além disso, as informações sobre as causas da corrupção são fornecidas na seção "Causas típicas da corrupção do arquivo MDB" deste artigo.

Mais Informações

Embora as etapas descritas neste artigo geralmente tenham êxito 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.

Os utilitários Reparar e Compactar

O utilitário Reparar

O utilitário Reparar pode corrigir bancos de dados com determinados tipos de dano. Esse utilitário tenta reparar apenas as tabelas, as consultas e os índices no banco de dados. Ele não tenta reparar formulários danificados, relatórios, macros ou módulos; porém, esse utilitário os copia para o novo banco de dados reparado.

IMPORTANTE: Executar o comando Reparar banco de dados apenas quando o mecanismo de banco de dados do Microsoft Jet retornar uma mensagem de erro informando que o utilitário Reparar deve ser executado. O comando Reparar banco de dados não deve ser executado em nenhuma outra circunstância.

O utilitário Compactar

O utilitário Compactar elimina espaços vazios em um banco de dados já existente. Esse utilitário Compactar faz isso criando um novo banco de dados de destino e copiando cada objeto do antigo banco de dados para o novo. Se escolher compactar o banco de dados para 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 de 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 do banco de dados original.

IMPORTANTE: Compactar o banco de dados geralmente é a melhor forma de manutenção preventiva para um arquivo .mdb. A lista a seguir apresenta as ações executadas pelo utilitário Compactar.
  • Reorganiza as páginas da tabela para que elas fiquem nas páginas do banco de dados adjacente. Isto 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 a partir do 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 diminui a menos que seja compactado. Para bancos de dados em que objetos e registros sejam freqüentemente adicionados, excluídos e atualizados, você deve compactar freqüentemente.
  • 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 tiverem sido excluídos, após você 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, depois da compactação, o valor será 51 quando o próximo registro for adicionado. Observe que isto é verdadeiro mesmo se os registros contendo valores maiores que 50 sejam adicionados anteriormente mas forem excluídos antes de compactar.
  • Regenera as estatísticas de tabela usadas no processo de otimização da consulta. Com o tempo, essas estatísticas podem se tornar desatualizadas, geralmente quando as transações são desfeitas ou quando o banco de dados não é fechado corretamente por causa de uma queda de energia inesperada ou porque o programa que usa o Microsoft Jet não foi fechado completamente antes de você desligar o computador.
  • Marca todas as consultas para que 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.

Diretrizes importantes para compactar um banco de dados

Antes de compactar um banco de dados, as seguintes condições devem ser atendidas:

O usuário que compacta o banco de dados deve estar conectado ou usar uma conta que tenha as 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 se o banco de dados seja compactado pela interface do usuário do Microsoft Access usando o mesmo nome de arquivo. O banco de dados compactado é renomeado como o banco de dados original somente quando a compactação tiver êxito.

Outros usuários não devem ficar com o banco de dados aberto. Quando for compactado, um banco de dados precisa ser aberto em modo exclusivo pelo Microsoft Jet para impedir que qualquer usuário acesse e modifique o banco de dados durante o processo.

Como recuperar um banco de dados danificado

Caso tenha os números de erro 3197, 3343 ou 3015 do Microsoft Jet 3.x, consulte também o seguinte artigo na Base de Dados de Conhecimento da Microsoft:
182867 ACC: Mensagens de erro devido a corrupção do banco de dados do Jet Database Engine 3.x
Essas etapas descrevem um método geral para reparar um banco de dados danificado:
  1. Faça uma cópia de backup do arquivo do banco de dados danificado (.mdb).
  2. Certifique-se de que o arquivo .mdb esteja fechado e exclua o arquivo .ldb correspondente, caso haja algum.

    OBSERVAÇÃO: O arquivo .ldb é usado para determinar quais registros estão bloqueados num 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 banco de dados correspondente (.mdb). Por exemplo, se você abrir (para uso compartilhado) o banco de dados de exemplo do Northwind.mdb na pasta C:\Arquivos de programas\Microsoft Office\Office\Samples, 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 duas exceções -- quando o último usuário não tem permissões de exclusão na pasta que contém o arquivo .mdb ou quando o banco de dados está corrompido.

    Para obter informações adicionais sobre os arquivos .ldb, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    136128 ACC: Introdução a arquivos .ldb Files (95/97)
    Ao solucionar os problemas que causam a corrupção do banco de dados, é possível visualizar o conteúdo dos arquivos .ldb executando o utilitário Ldbview. Para obter mais informações sobre esse utilitário, consulte a seção "Como determinar quais usuários/estações de trabalho estão fazendo com que o arquivo seja considerado suspeito" deste artigo.
  3. Execute o utilitário Compactar dessa forma:
    1. Se um banco de dados estiver aberto, feche-o.
    2. No menu Ferramentas, aponte para Utilitários de bancos de dados, e clique em Compactar bancos de dados.

      Neste ponto, verifique se o dano causado no banco de dados foi reparado. Se não foi, continue com as etapas remanescentes.
  4. Se o dano estiver em uma tabela, consulta ou índice, execute o utilitário Reparar dessa forma:

    IMPORTANTE: Execute o comando Reparar banco de dados apenas quando o mecanismo do banco de dados do Microsoft Jet retornar uma mensagem informando que o utilitário Reparar deve ser executado. O comando Reparar banco de dados não deve ser executado em nenhuma outra circunstância.
    1. Se um banco de dados estiver aberto, feche-o.
    2. No menu Ferramentas, aponte para Utilitários de bancos de dados, e clique em Reparar bancos de dados.
    3. Selecione o arquivo danificado na caixa de diálogo Reparar banco de dados e clique em Reparar.

      Se o reparo tiver êxito, a seguinte mensagem será exibida:
      O banco de dados '<caminho><nome do banco de dados>' foi reparado com êxito.
      Se o reparo não tiver êxito, uma mensagem informando isso será exibida. Isso quer dizer que o dano causado à tabela, à consulta ou ao índice é tão grave que não pode ser corrigido, ou o dano está em um objeto que o utilitário Reparar não pode prejudicar.
  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 sobre esse tópico, pesquise a frase "arquivo de 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 qualquer relacionamento associado a esta tabela e exclua a tabela a partir do banco de dados.
    3. Compacte o banco de dados.
    4. Recrie a tabela e qualquer relacionamento que esta tenha.
    5. Usando um processador de texto, examine o arquivo ASCII procurando por dados errados ou estranhos e remova esses registros. Salve o arquivo num formato de arquivo de texto ASCII.
    6. Reimporte o arquivo ASCII para a tabela recriada. Para obter mais informações sobre esse tópico, pesquise a frase "arquivo de texto delimitado" e visualize o tópico "Importar ou vincular dados e objetos" usando o Índice da Ajuda do Microsoft Access.
    7. Insira novamente os registros que você foi forçado a excluir.
  6. 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 do banco de dados antigo para o novo. Recrie os relacionamentos. Essa técnica resolve problemas de tabelas de sistemas danificadas no banco de dados.
  7. 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 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 do 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 novamente, já que não há como afirmar quais controles estão danificados.
  8. Se estiver em uma macro ou módulo, o dano pode estar tanto na macro quanto 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á-lo a partir da cópia de backup do 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 poderia envolver caracteres não ASCII incorporados ao módulo. Salve o módulo como um arquivo de texto, remova qualquer dado ruim ou estranho e recarregue o arquivo de texto num novo módulo.
    • Se o dano estiver na macro ou no próprio módulo, crie uma nova macro ou módulo e recrie o conteúdo da macro ou módulo original.
  9. Se a corrupção envolver a impossibilidade de abertura do módulo de classe de um formulário ou relatório, ou o modo Design de um módulo, talvez deseje tentar a opção de linha de comando /decompile. É altamente recomendável que você faça uma cópia de backup do banco de dados antes de tentar usar esse método. Este é um comando de exemplo com a opção /decompile, em que MSAccess.exe está no local padrão e o banco de dados DB1.mdb está na pasta C:\:
    C:\Arquivos de programas\Microsoft Office\Office\MSAccess.exe /decompile C:\DB1.mdb
    Depois de executar esse comando a partir da caixa Executar, é solicitado que você faça a compilação do banco de dados usando /decompile.
  10. Considere o fato de baixar o utilitário Jetcomp.exe. Em alguns casos, a execução de Jetcomp.exe pode reparar bancos de dados irrecuperáveis. Para obter informações adicionais sobre como obter o Jetcomp.exe, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    172733 Versão atualizada do Microsoft Jet 3.5 disponível para download
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 do banco de dados ou recrie o banco de dados.

Como uma alternativa final, alguns consultores podem fornecer um serviço de reparo do 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 "Third Party and User Groups", 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 ACC: Grupos de notícias do Microsoft Access disponíveis na Internet

Causas típicas da corrupção do arquivo MDB

Há três causas principais de corrupção em arquivos mdb do Access/Jet.

O banco de dados fica suspeito/corrompido devido à operação de gravação interrompida

Sempre encerre o Access corretamente clicando em Sair ou Fechar no menu Arquivo. Se um banco de dados estiver aberto e gravando dados quando o Access for fechado de forma irregular, o mecanismo do banco de dados Jet pode marcá-lo como suspeito/corrompido. Isso pode 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 mas ainda podem interferir no Jet ao gravar dados no disco enquanto o banco de dados estiver aberto. Isto pode ocorrer, por exemplo, quando as redes ocorre colisão de 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 o Jet começa uma operação de gravação, ele define um sinalizador e o redefine quando a operação estiver concluída. Se uma operação de gravação for interrompida, o sinalizador permanece definido. Quando você tenta abrir o banco de dados de novo, 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 e/ou reparar o banco de dados 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. Consulte a seção "Como determinar quais usuários/estações de trabalho fazem com que o arquivo seja considerado suspeito" neste artigo.

Hardware de rede com defeito

Neste caso, a corrupção do arquivo não envolve o mecanismo do banco de dados Jet; na verdade, o arquivo está literalmente corrompido devido à 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 somente a esses.

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

Como abrir e salvar o arquivo MDB em outro programa

Não há como recuperar um arquivo .mdb que foi aberto e salvo em um programa que não seja o Access. Por exemplo, o Microsoft Word permite que você abra e salve um banco de dados do Access (ainda que isso não tenha muita utilidade, já que se você abrir um arquivo MDB em outro programa, tudo o que verá serão caracteres estendidos). Salvar o arquivo dessa forma vai fazer com que o arquivo .mdb solicite uma senha do banco de dados, assim que você tentar abri-lo no Access -- mesmo que o arquivo nunca tenha sido protegido por uma senha no Access. A solicitação de senha ocorre em casos como esse porque é na primeira faixa de bytes verificada pelo Access quando o arquivo é aberto que pode estar a senha do banco de dados. Se este byte tiver 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. Recuperar uma cópia de backup do arquivo é a única solução nesse caso. Para obter informações adicionais sobre esse problema, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
223043 ACC: A senha do banco de dados aparece embora nunca tenha sido definida

Como determinar quais usuários/estações de trabalho fazem com que o arquivo seja considerado suspeito

É possível determinar qual estação de trabalho e qual usuário fizeram o Jet considerar um arquivo .mdb como suspeito usando o utilitário LDBView, cujo download (Jetutils.exe) está disponível no seguinte site da Microsoft:
http://download.microsoft.com/download/access97/utility1/1/WIN98/EN-US/JETUTILS.EXE
Para obter mais informações sobre o Microsoft Jet Utilities, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
176670 ACC: Utilitários Microsoft Jet disponíveis no download center
O Ldbview permite que você observe quais usuários estão atualmente conectados ao banco de dados, bem como os usuários que talvez tenham deixado o arquivo em um estado corrompido.

Etapas que você pode executar para impedir a corrupção

  • Evite queda de energia durante as gravações do banco de dados. A queda de energia pode deixar o banco de dados em estado corrompido.
  • Evite quedas de conexões de rede.
  • Evite o fechamento 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 estiver programando, feche todos os objetos DAO (Data Access Object) e ADO (ActiveX Data Objects) que você possa ter deixado aberto. Entre os exemplos estão os objetos Recordset, QueryDef, TableDef e Database.
  • Erros graves de sistema quase sempre causam o encerramento irregular. Se o banco de dados está propenso a erros graves, resolva-os antes que o banco de dados fique muito danificado para ser aberto ou recuperado.Para obter mais informações sobre o Microsoft Jet Utilities, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
    148424 ACC: Solucionando erros fatais no sistema no Microsoft Access 95 e Microsoft Access 97
  • Compacte o banco de dados com freqüência

    IMPORTANTE: Não execute o comando Reparar banco de dados no Access 97 a menos que o Microsoft Jet solicite que você faça isso.
  • Não execute IPX no 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 protocolos dupla do IPX e TCP-IP no cliente Windows 95. O 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 de abrir e fechar num loop (entre 40.000 e 1.000.000 de operações de abrir e fechar consecutivas).

Propriedades

ID do artigo: 279334 - Última revisão: sexta-feira, 13 de agosto de 2004 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft Access 97 Standard Edition
Palavras-chave: 
kbdownload kbhowto kbusage KB279334
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

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