Backup - URGENTE!!!

Delphi

09/08/2003

Estou fazendo a restauracao do meu BD (INTERBASE) em tempo de execução, so q da erro pq ele diz que o BD esta sendo usado. COmo fazer para que os dados sejam atualizados ou recuperados sem dar esse erro??


Obs.: Estou usando o componente do Interbase para fazer o Backup

Abraços :lol:


Thales

Thales

Curtidas 0

Respostas

Werlon Goulart

Werlon Goulart

09/08/2003

Basta vc fechar o DataBase q vai funcionar...

Tem um componente muito bom chamado VCLZip q compacta padrao Zip e nao exige DLL ou qquer arquivo externo.
Assim, depois de gerar o GBK vc pode compactar usando o VCLZip, inclusive em varios discos.

Mas nao é de graca nao... Tem q gastar DinDin....

Um Abraco
Werlon Goulart


GOSTEI 0
Koplin

Koplin

09/08/2003

Veja: BackUp da para fazer com o BD funcionando, agora restauração exige que ninguem esteja acessando os arquivos. Lembre-se que em Windows Se 1 usuário acessa um arquivo, ele não pode ser renomeado, modificado ou excluido por outros - violação de compartilhamento . Vc precisa desativar o BD, realmente para fazer a restauração. E o Backup On-Line Também não é a melhor opção, dependendo do sistema que vc trabalha, pois vc pode correr o risco de perder algum dado mais recente para o backup.

Espero ter ajudado.


GOSTEI 0
Thales

Thales

09/08/2003

Ja tentei o comando [b:e99a88eebd]Database.Connected:= false;[/b:e99a88eebd] e não deu certo, aparece o mesmo erro.. :/


GOSTEI 0
Koplin

Koplin

09/08/2003

Quando eu usava IB/FB fazia com o IBRestoreService:

DM1.DB1.Close;
with IBRestoreService1 do Begin
ServerName := ´Local Server´;
Params.Add(´user_name=SYSDBA´);
Params.Add(´password=masterkey´);
Active := True;
try
Screen.Cursor:=-11;
Verbose := True;
Options := [Replace, UseAllSpace];
PageBuffers := 3000;
PageSize := 4096;
DatabaseName.Add(DM1.DB1.databasename);
Backupfile.Clear;
MEMO2.Clear;//usava um memo para visualizar o processo...
Memo2.Lines.Add(´/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\´);
Memo2.Lines.Add(´ Iniciando Restauração da BD...´);
Memo2.Lines.Add(´/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\´);
BackupFile.Add(´A:\arquivo.gbk´);
ServiceStart;
While not Eof do BEGIN
Memo2.Lines.Add(GetNextLine);
Application.ProcessMessages;
end;
Memo2.Lines.Add(´/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\´);
Memo2.Lines.Add(´ Restauração Concuída...´);
Memo2.Lines.Add(´/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\´);
finally
Screen.Cursor:=0;
Active := False;
end; end; end;

Deixei exatamente como eu usava. Agora, não pode ter ninguem acessando em nenhuma máquina.


GOSTEI 0
Thales

Thales

09/08/2003

Show de Bola!! Era disso mesmo que eu estava precisando!! :D Valeu!
Mas sem querer abusar de voce, mas já abusando :P, aí vai minha duvida:
Neste exemplo que voce me passou, os dados sao substituidos pelos os dados que ja existem no BD. Existe uma maneira de esses dados que ja estao inseridos no BD nao serem perdidos, ou seja, haveria uma concatenação dos dados que ja estao no BD com os que serao restaurados. Deu pra entender?!
O que eu queria mesmo vc ja conseguiu me ajudar, isso que estou te perguntando acima é so por questao de curiosidade.

Obrigado pela ajuda!
:D


GOSTEI 0
Koplin

Koplin

09/08/2003

Tem. Mas eu não sei. Lamento.
Fico feliz que resolvi seu problema.
Boa sorte.


GOSTEI 0
POSTAR