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