Problemas com o Banco de Dados


Objetivo - Apresentar os principais problemas que ocorrem com o banco de dados Access, devido a problemas de redes, equipamentos e usuários inexperientes.


Podemos classificar os problemas em quatro categorias:


a) Falhas de equipamentos – talvez esta seja a maior responsável por causar danos a um banco
de dados. A dificuldade está em identificar as causas do problema, que podem ser várias:


    · problemas de hardware, tais como: disco rígido danificado, placa mãe com componentes defeituosos, memória
      RAM com problema; superaquecimento da CPU causado por um "cooler" inoperante etc; e
 

    · interrupção ou flutuações no fornecimento de energia elétrica, que podem, inclusive, inutilizar algum
      componente do computador. Estes problemas são eliminados com o uso de um bom no-break;

 

b) Problemas de software – são causados por algum arquivo indevidamente apagado durante a desinstalação de
um programa; um vírus já removido, mas que deixou algum arquivo importante danificado; Registro do Windows
alterado indevidamente ou corrompido etc;
 

c) Usuários sem experiência ou treinamento – estes usuários podem causar sérios danos ao banco de dados. Por
exemplo, existem pessoas que, por incrível que pareça, desligam o computador direto no estabilizador, sem clicar
no Menu Iniciar – Desligar; além de alterar parâmetros de configuração do Windows e do Access. Há ainda aqueles
desavisados que abrem e, pior, salvam o banco de dados com o Word e Excel. O único jeito é efetuar reuniões com
os usuários explicando-lhes como operar o sistema corretamente; e
 

d) Problemas com a rede local – Ao contrário do que muitos pensam, o Microsoft Access trabalha muito bem
em rede. Porém, quando arquivos começam a ficar corrompidos em uma rede local, é muito mais complicado
identificar a causa do problema. Veja alguns exemplos:
 

    · o nível de colisão dos pacotes (rede Novell) pode estar alto, ou há perda acentuada no cabeamento. Assim,
      você deveria checar o funcionamento de hubs, cabeamento, placas de rede etc. Você pode colocar um switch ligado
      na pilha de hubs e substituir cabos antigos pelo tipo par trançado categoria 5; não use cabo coaxial de jeito
      nenhum;
 

    · alguma estação de trabalho pode estar com problemas de hardware (placa de rede, placa mãe, HD etc) e estar
      corrompendo o mdb. A solução seria identificar essa estação e consertá-la.
 

    · o servidor de arquivos da rede pode estar no limite: pouco espaço em disco, falhas de hardware, pouca
      memória RAM etc.
 

A solução é chamar uma empresa séria, especializada em redes e testar tudo com equipamentos apropriados. O
ideal é ter um contrato de manutenção da rede para detectar e solucionar os problemas à medida em que ocorrem.

 


Observação - O texto a seguir, é recheado de termos e conceitos técnicos, portanto é indicado somente a profissionais e usuários com experiência em TI.


Também um driver incorreto de placa de rede pode vir a corromper um BD situado na rede local, fazendo com
que o Access apresente mensagens de erro como “Formato de banco de dados não reconhecido arquivo>”, durante a abertura ou execução do aplicativo. Este problema foi abordado na Revista Fórum Access, Visual Basic e Office nº 33 – Set/Out – 1999, pág. 14, artigo “Problemas do Access com Windows 98 em rede”, e ocorre quando é instalado o Windows 98 num microcomputador com a placa de rede da marca Realtek modelos 8019 e 8029, cujo driver original corrompe arquivos mdb.

 

O seguinte artigo Q189778 - "Possible Problems with Windows 98 Realtek Network Adapter Driver" explica o porquê:
http://support.microsoft.com/support/kb/articles/q189/7/78.asp.
A solução, neste caso, é baixar o driver atualizado do site do fabricante e instalá-lo no Win98:
http://www.realtek.com.tw/cn/driver/8029-driver.htm (arquivo "win98-8029(506).exe")”

O endereço para ftp é:
ftp://210.192.0.122/lancard/drivers/8029/win98-8029(506).exe

 

Mensagens de erro mais comuns exibidas pelo Access ao se deparar com um banco de dados
corrompido.

As causas indicadas podem variar dependendo da versão. Para obter mais detalhes, o leitor poderá
visitar as páginas da Microsoft Knowledge Base (KB) citadas ao longo do presente artigo.

Se você utiliza o Access 2.0 e está recebendo as mensagens de erro abaixo (ou suas similares em português), faça
o download do Service Pack (arquivo "ACCSVC.EXE") no site de suporte da Microsoft ou na Seção de Download
do Fórum Access (
http://www.forumaccess.com.br/htm/downlo.htm):
 

    - Couldn't open SYSTEM.MDA; ou
    - is corrupted or is not a database file. Attempt to repair?

 

Nas demais versões, os erros mais comuns são:
 

a) Erro 3197 - "O mecanismo do banco de dados Microsoft Jet interrompeu o processo, pois você e um outro
usuário estão tentando alterar os mesmos dados ao mesmo tempo."
Causa: Este erro é típico de bloqueio de registro em um ambiente multiusuário. Entretanto, ele ocorre
também quando um campo do tipo MEMO ou OLE possui dados corrompidos armazenados.

 

b) Erro 3343 - "Formato de banco de dados não reconhecido "
Causa: Este erro ocorre geralmente quando o Access é indevidamente fechado durante o processo de escrita
de dados no disco, ou quando uma das condições abaixo é verdadeira:
.Você está tentando abrir um banco de dados ou um objeto num banco de dados que foi criado em uma edição
do Access em outro idioma.
.Você está tentando abrir um banco de dados que foi criado ou compactado enquanto a ordem de classificação
do novo BD (Ferramentas – Opções – Nova ordem de classificação do banco de dados) foi ajustada para um valor
diferente de “Geral” (ou General em inglês).

 

c) Erro 3015 - " não é um índice nesta tabela. Examine a coleção de índices do objeto
TableDef para determinar os nomes de índice válidos".
O erro é bem documentado na Microsoft Knowledge Base (KB), principalmente no artigo "Q158933 - ACC:
Error " Isn't an Index in This Table" em:
http://support.microsoft.com/support/kb/articles/q158/9/33.asp

Causa: Este erro é tipicamente causado quando há um índice corrompido na tabela de sistema "MSysObjects".
Normalmente ele ocorre por um processo de reparar o banco de dados abortado, porém pode ocorrer por
problemas de hardware, na rede local, falta ou variações no fornecimento de energia etc. Também pode ocorrer
com um mdb convertido da versão 7.0 para a 97.

 

d) "Este programa executou uma operação ilegal e será fechado"
Se você clicar em Detalhes, será exibida uma mensagem similar a essas:
“MSACCESS causou uma falha de página inválida no módulo MSACCESS.EXE em 015f:300b8615”; ou
“MSACCESS causou uma falha de página inválida no módulo VBA332.dll em 014f:65182a15”.
Causa: algum formulário, relatório, macro e/ou módulo podem estar corrompidos. Quando este erro ocorre,
você é obrigado a fechar o Access, e não há como consertá-lo com o procedimento de Reparar o Banco de Dados.


Entretanto, a mensagem de operação ilegal (que a Microsoft também chama de Invalid Page Fault - IPF)
poderá surgir em decorrência de diversos outros fatores que não um banco de dados corrompido ou Dll's
defeituosas, conforme mostrado no artigo "Q148424: Troubleshooting Invalid Page Faults in MS Access 95 and
97", em:
http://support.microsoft.com/support/kb/articles/q148/4/24.asp

Abaixo seguem mais alguns exemplos:
- defeitos de hardware mencionados anteriormente costumam causar esta mensagem não só no Access, mas
também em outros aplicativos do Windows.
- uso de instruções indevidas no código em VBA, tais como: uso incorreto da API do Windows; atribuição
de valores incompatíveis a uma variável etc, fazendo com que o Access emita a mensagem de operação ilegal.
Neste caso, verifique o código e altere a instrução incorreta.
- se a mensagem de erro contiver a informação de que foi causada uma falha de página inválida no módulo
Kernel32.dll, procure pelo Artigo "Q190517: Troubleshooting Office Kernel32.dll Errors Under Windows 98",
em
http://support.microsoft.com/support/kb/articles/q190/5/17.asp, para obter uma lista de possíveis soluções. Lá
você obterá outros links para erros de Kernel32.dll no Office 2000 e no Windows 95.
- se você estiver efetuando localização e substituição num campo MEMO contendo mais de 2.052
caracteres, a mensagem de erro poderá surgir. Veja a solução no Artigo "Q173975: Search and Replace in Large
Memo Field Causes IPF", na Microsoft Knowledge Base
(
http://support.microsoft.com/support/kb/articles/q173/9/75.asp).
- ao instalar o Access 97 ou o Office 97 Professional, caso o arquivo Dao350.dll já exista no seu HD, ele
não será apropriadamente registrado no Windows. Assim, ao abrir um banco de dados ou um Assistente (Wizard)
do Access, por exemplo, será exibida a mensagem de operação ilegal. A solução para o problema está no Artigo
"Q177264: Invalid DAO Reference Causes an IPF in MSACCESS.EXE"
(
http://support.microsoft.com/support/kb/articles/q177/2/64.asp).
- se você instalar os componentes do Data Access Objects (DAO) do Visual C++ versões 4.1 ou 4.2, e
rodar o programa de Setup do Microsoft Access 7.0, você poderá receber a mensagem de erro. Veja a solução no
Artigo "Q162746: ACC95: Visual C++ 4.1/4.2 Cause Error Messages in MS Access 95"
(
http://support.microsoft.com/support/kb/articles/q162/7/46.asp).

Arquivo Irrecuperável
Se você abrir e salvar um banco de dados do Access (arquivo mdb) com outro programa, tal como o Word,
Excel, Notepad etc, ele ficará irremediavelmente corrompido. Ao tentar abrir o banco de dados com o Access, será
exibida a caixa de diálogo solicitando uma Senha. Este é um comportamento normal do Access nesta situação, e
não adianta digitar nenhuma senha ou fazer qualquer coisa, pois o arquivo está perdido.
O problema está descrito
nos artigos:
- “Q223043: Database Password Appears Even Though It Was Never Set”:
http://support.microsoft.com/support/kb/articles/q223/0/43.asp
- "Q243895: ACC2000: Database Password Appears Even Though It Was Never Set":
http://support.microsoft.com/support/kb/articles/q243/8/95.asp

Guia de Soluções
O leitor já deve ter verificado que algumas soluções foram sendo indicadas ao mesmo tempo em que os
problemas foram sendo descritos, pois é mais conveniente para casos específicos ou problemas de hardware. A
seguir, portanto, irei detalhar as soluções para as mensagens de erro mais comuns associadas ao banco de dados
corrompido.

Caso o problema esteja em algum formulário, relatório ou módulo, você não conseguirá reparar um arquivo
mdb corrompido com o assistente do próprio Access, disparado a partir do menu Ferramentas – Utilitários de
banco de dados – Reparar banco de dados, já que ele tenta reparar somente as tabelas, consultas e índices.

Antes de iniciar qualquer procedimento, feche o arquivo MDB corrompido, faça um back-up e depois apague o
arquivo LDB que foi deixado no mesmo diretório do MDB.
Após, siga os passos abaixo:

 

1 – Se o Access exibe mensagens de erro diferentes da mensagem de operação ilegal:
Baixe a atualização do mecanismo Jet no site de suporte da Microsoft. Vá até
http://support.microsoft.com/support/downloads/, e clique em Microsoft Office e depois em Access. Escolha a sua
versão e procure pelos links abaixo:
a) Para o Access 95 - "Msjtwng.exe: Updated Jet DLLs"; e
b) Para o Access 97 - "Jet35sp3.exe: Microsoft Jet 3.51 Service Pack 3". O arquivo Jet35sp3.exe contém a
nova versão 3.51 do mecanismo Jet, que possui um processo de Compactar melhorado e que passou a incorporar
toda a funcionalidade do processo de Reparar. Ao descompactar o arquivo, você obterá o utilitário
JETCOMP.EXE, que emprega o compactador melhorado. Se quiser, procure diretamente no link
http://support.microsoft.com/download/support/mslfiles/Jet35sp3.exe
Ou:
artigo Q172733 - Updated Version of Microsoft Jet 3.5 Available for Download:
http://support.microsoft.com/support/kb/articles/q172/7/33.asp

ATENÇÃO: O Jet35sp3 requer a prévia instalação do Office Service Release 2 (SR-2), caso contrário você
poderá causar problemas no Access 97. A versão mais recente é a SR-2b (Office 97 em português) em:
http://officeupdate.com/brasil/downloadDetails/sr2off97detail.htm

ou:

http://officeupdate.com/brasil/downloaditems/SR2bOF97.EXE

Caso você não tenha atualizado o seu Office para o SR-2, baixe um Service Pack anterior do Jet na página
da Microsoft ou no site da Revista Fórum Access
http://www.forumaccess.com.br/htm/downlo.htm

Veja mais detalhes no link abaixo:
http://support.microsoft.com/support/kb/articles/Q172/7/33.asp

As DLL’s decorrentes da descompactação dos arquivos baixados deverão ser copiadas para o diretório
C:\Windows\System. Depois inicie o Access e tente reparar e compactar o arquivo corrompido (Access 95), ou
utilizar o programa JETCOMP.EXE no caso do Access 97.

Uma outra solução reportada no Grupo de discussão é o uso do Access 2000 para reparar BD's corrompidos
de versões anteriores, já que o A2K já possui as melhorias do Jet.

 

2 – Se o Access exibe a mensagem: "Este programa executou uma operação ilegal e será fechado”:
Eu costumo tentar uma solução que resolve 99% dos casos de formulários, relatórios e módulos
corrompidos: o argumento de linha de comando não documentado "/decompile". Este argumento força a
“descompilação” total do MDB. Clique no Menu Iniciar, selecione Executar, e digite a seguinte linha de comando
(coloque o caminho de um mdb válido):

"C:\Arquivos de Programas\Microsoft Office\Office\msaccess.exe" "C:\Temp\Prazos.mdb" /decompile

Após concluir a operação, uma mensagem irá solicitar que você compile o MDB novamente. Clique no
botão OK da mensagem e saia do Access sem fazê-lo. Inicie o Access mais uma vez, carregue o seu MDB e abra a
estrutura de qualquer módulo. Clique no menu Depurar e escolha Compilar e Salvar todos os Módulos. Depois,
realize a compactação do banco de dados.

NOTA: a) O argumento Decompile funciona no Access 2000 também. Porém, não é exibida nenhuma
caixa de diálogo, como acontece no Access 97.
b) Para uma discussão mais profunda sobre este argumento, leia o artigo "The real deal on the
/Decompile switch", na página de Michael Kaplan:
http://www.trigeminal.com/usenet/usenet004.asp

 

3 – Caso nenhum dos passos anteriores resolva o problema, tente eliminar os outros possíveis motivos citados
nos tópicos precedentes. Se ainda assim não tiver êxito, crie um novo banco de dados e importe os objetos
um-a-um do banco de dados corrompido para o novo. Isso já resolve o problema com tabelas de sistema
corrompidas.
Siga os passos abaixo:
- primeiro, importe uma-a-uma somente as tabelas e consultas;
- depois, importe cada Formulário, Relatório, Macro e Módulo separadamente, e teste-os um-a-um, antes
de importar o seguinte.

Faça isso até obter uma mensagem de erro, que revelará o objeto corrompido.

Se a falha estiver num Formulário ou Relatório, crie um novo Formulário ou Relatório com os respectivos
controles e delete o objeto corrompido.
Se a falha estiver numa Macro ou Módulo, recrie a Macro ou Módulo. Os códigos do Módulo corrompido
podem ser copiados, caso não contenham caracteres estranhos (non-ASCII).
Após resolver o problema, recrie os Relacionamentos entre as tabelas ou importe-os com a função
ImportRelations() do artigo “Q128157: Using DAO in Visual Basic Code to Import Relationships”, em
http://support.microsoft.com/support/kb/articles/q128/1/57.asp
Ao final, efetue a compilação, salve todos os módulos e compacte o novo MDB.

Última Tentativa
Finalmente, se nada acima deu certo, não desista ainda do seu banco de dados. Visite a página da empresa PK
Solutions (
http://www.pksolutions.com/), pois eles garantem que recuperam qualquer banco de dados Access
corrompido em até 48 horas, por preços a partir US$ 120.00.
Procure pelo link "Database Recovery Service".

Mais Informações:
Na Microsoft Knowledge Base, procure pelos artigos abaixo:
- Q109953: How to Repair a Damaged Database, em
http://support.microsoft.com/support/kb/articles/q109/9/53.asp
- Q182867 - ACC: Jet Database Engine 3.x Error Messages Due to Corruption, em
http://support.microsoft.com/support/kb/articles/q182/8/67.asp
- Q238401: Getting Unrecognized Database Format Error Message When Upgrading to Access 2000, em
http://support.microsoft.com/support/kb/articles/q238/4/01.asp
- Q184988: "Selected Collating Sequence Not Supported" or "Unrecognized Database Format" Error, em
http://support.microsoft.com/support/kb/articles/q184/9/88.asp
- Q175380: ACC95: "Unrecognized Database Format" Error Message Using Database Documentor, em
http://support.microsoft.com/support/kb/articles/q175/3/80.asp
- Q222457: ACC2000: Illegal Operation Selecting Controls on a Form, em
http://support.microsoft.com/support/kb/articles/q222/4/57.asp