MEU BD ACCESS SE CORROMPE A CADA 4 DIAS !
Bom dia,pessoal!
Tenho uma aplicação VB (5.0) e Access ( 97) na empresa.
o banco esta com 180 MB e é acessado simultaneamente por
vários usuários em rede.
O problema:
A cada intervalo de 3\4 dias o banco se "corrompe" e ao
abrir o Access para "reparar",o banco se repara,mas exibe
uma mensagem informando que "foram encontradas duplicidades
num indice".Pergunto aos colegas,o que posso fazer para
localizar e resolver o problema???
Obrigado pela atenção
Tenho uma aplicação VB (5.0) e Access ( 97) na empresa.
o banco esta com 180 MB e é acessado simultaneamente por
vários usuários em rede.
O problema:
A cada intervalo de 3\4 dias o banco se "corrompe" e ao
abrir o Access para "reparar",o banco se repara,mas exibe
uma mensagem informando que "foram encontradas duplicidades
num indice".Pergunto aos colegas,o que posso fazer para
localizar e resolver o problema???
Obrigado pela atenção
putz access 97 com 180mb só vai dar pau mesmo, sugiro que troque pelo
access 2000.
access 2000.
Adicione uma rotina de reparação e compactação tb...isso por ajudar um poko!
Boa sorte!
eu usei o access97 por +/- 3 anos, e o banco tinha uns 600mb +/- e chegou a corromper 2 ou 3 vezes... depois migrei para o access2000.
mas vc precisa verificar as condições em que o banco corrompe, senão, não adianta nada mudar para o 2000.
mas vc precisa verificar as condições em que o banco corrompe, senão, não adianta nada mudar para o 2000.
Cara
se eu fosse vc criarva um Banco Novo 97, e tranasportava os dados
se eu fosse vc criarva um Banco Novo 97, e tranasportava os dados
Xii veio num vira continuar no 97 mesmo tb ja tive esse problema só q o meu Banco era um pouquinho menor tinha faixa de uns 45 MB, resolvi da seguinte maneira troquei a estrutura para ACCESS 2000 e não tive mais problemas, ahh kra outra coisa verifique tb esse sistema que vc usa para acessar essa base de dados, pode acontecer de existir muitas conexões de um unico terminal abertas sem necessidade, ai como vc disse q funciona em rede são varios terminais acessando a base de dados entendeu aumentando bastante bastante possibilidade de corromper.
Mas creio q só alterando a estrutura ja fica OK
flw kra
Mas creio q só alterando a estrutura ja fica OK
flw kra
Pessoal,o problema é que com os controles do VB
que foram usados,a aplicação somente
roda se a Base do Access for "97".Ou seja,mudar
a versao do Access agora esta fora de cogitação!
Queria saber então se existe algum jeito,de encontrar
os tais "indices duplicados",que a mensagem de erro do
access informa ,quando se corrompe?
que foram usados,a aplicação somente
roda se a Base do Access for "97".Ou seja,mudar
a versao do Access agora esta fora de cogitação!
Queria saber então se existe algum jeito,de encontrar
os tais "indices duplicados",que a mensagem de erro do
access informa ,quando se corrompe?
Tenta fazer o que o Cleverton disse.
Cria uma nova base de dados do 97 mesmo e transporta os dados.
Ai ve se vai continuar o problema.
Cria uma nova base de dados do 97 mesmo e transporta os dados.
Ai ve se vai continuar o problema.
Poutz ai fica complicado, vc diz q o erro da mais ou menos de 4 em 4 dias né, faz um teste, tenta todo dia de manha quando ligar o servidor reparar e compactar o DB com as proprias ferramentas do ACCESS 97 e ve se resolve, se resolver o problema basta vc desenvolver uma ferramentinha para fazer isso automaticamento quando o servidor for ligado, mas isso é uma adaptação creio que não seja a solução ideal.
flw kraa
flw kraa
Pela descrição do problema está claro que trata-se de inserções simultà ¢neas na base de dados por usuários concorrentes. Talvez você tenha que tratar a aplicação para que ela não permita o erro na base.
Por exemplo:
- Pegue a data de inserção do último registro no banco de dados.
- Calcule quantos segundos se passaram entre a última inserção e o momento atual
- Aguarde "n" segundos para que um novo registro seja gravado
Como voce deve estar usando " insert into " a velocidade é seu principal aliado neste processo, mas dai caÃmos no problema de corromper sua base.
Por exemplo:
- Pegue a data de inserção do último registro no banco de dados.
- Calcule quantos segundos se passaram entre a última inserção e o momento atual
- Aguarde "n" segundos para que um novo registro seja gravado
Como voce deve estar usando " insert into " a velocidade é seu principal aliado neste processo, mas dai caÃmos no problema de corromper sua base.
o problema dele é que ele usa componente data, aquele controle intrÃnseco do vb (no caso dele vb5), e ele não pode mudar para access 2000 devido a versão do vb dele. também usar esses controles data é até mesmo desestimulado pela microsoft, a maneira mais sensata, visto que a sua base de dados vai continuar crescendo, é dá um upgrade na sua aplicação e por consequencia até no seu banco de dados, ah! e tem também que levar em conta as boas práticas em se acessar dados como disse o DAVYS ali em cima.
Tópico encerrado , respostas não são mais permitidas