Ir para conteúdo
Fórum Script Brasil
  • 0

Restauração De Backup - Tá Difícil Encontrah Uma Solução...


Guest Alisson

Pergunta

daew galera, é o cguint, já busquei em VÁRIOS fórums, já encontrei DIVERSOS posts, inclusiv com o msmo problema que o meu, mas nenhum com uma alguma solução que funcione MEMSMO.

bom, meu problema c refere entaum à restauração de backups: o backup é realizado perfeitament, já a restauração sempre aparec o cguint erro: "...lock time-out on wait transaction object C:\... .GDB is in use could not drop database C:\..., enfim... pelo que entendi como o banco está em uso não é possível substituí-lo, abaixo segue a procedure do botao "restaurar".

procedure TForm_Backup.Button2Click(Sender: TObject);

begin

if feRestaurar.FileName = '' then

begin

Showmessage('Indique onde está o seu Arquivo de Backup!');

feRestaurar.SetFocus;

Abort;

end;

if feRestBanco.Text = '' then

begin

Showmessage('Indique onde irá Restaurar o seu Backup!');

feRestBanco.SetFocus;

Abort;

end;

with IBRestoreService1 do

begin

Params.Clear;

BackupFile.Clear;

ServerName := 'localhost';

Params.Add('user_name=SYSDBA');

Params.Add('password=masterkey');

LoginPrompt := False;

Active := True;

try

Form_Principal.IBD_Banco.CloseDataSets;

Form_Principal.IBD_Banco.ForceClose;

Form_Principal.IBD_Banco.Connected := False;

Verbose := True;

Options := [Replace, UseAllSpace];

TraceFlags := [];

PageBuffers := 3000;

PageSize := 4096;

DatabaseName.Add('C:\SISBM\SISBM.GDB=4096');

BackupFile.Add(feRestaurar.FileName);

ServiceStart;

While not Eof do

mmRestaurar.Lines.Add(GetNextLine);

finally

Active := False;

Form_Principal.IBD_Banco.Connected := True;

Form_Principal.IBD_Banco.Open;

end;

end;

ShowMessage('Restauração realizada com Sucesso!');

end;

C alguém puder m ajudar quanto a ec PROBLEMÃO logo no fim do sistema, pra eu podê akbah logo, ou tiver uma outra alternativa/método/dik pra eu que possa realizar backup/restauração d um sistema, ficaria muito grato. Obrigado pela atenção, abraços....

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

opa

Cara talvez eu esteja dizendo besteira, mas eu acho

que a melhor forma de se fazer backup é copiando

o arquivo de banco de dados, ou compactando-o em

um arquivo...

Exemplo, vamos supor que seu arquivo de banco de dados

é: C:\SISBM\SISBM.GDB bom então se você criar uma pasta

Backup dentro da pasta C:\SISBM\ e assim fazer exemplo

Function MakeBackup: Boolean;

begin

ForceDirectories('C:\SISBM\Backup\');

Result := CopyFile(PChar('C:\SISBM\SISBM.GDB'), PChar('C:\SISBM\Backup\' + FormatDateTime('ddmmyy-hhmm', now) + '.gdb'), False);

end;

O arquivo de backup vai ganhar um nome tipo assim, com base

na data de hoje, 05 de Fevereiro e a hora agora é 14:20 seria

050207-1420.gdb

Ai pra usar só fazer

if (MakeBackup) then

ShowMessage('O Backup foi efetuado com sucesso!') else

ShowMessage('Houve um erro ao tentar fazer o Backup');

Detalhe

O ideal é fazer com os componentes de ligação com o banco

de dados fechados...

Pra restaurar é só copiar um arquivo de backup de determinada

data devolta para o original...

'C:\SISBM\SISBM.GDB'

Quanto a seu problema, acredito eu que você tenha que fechar

todos os componentes ligados ao banco de dados para não dar

este erro... Active := False; ou Close;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

daew amigo, vlw msmo pela dika! Realmente concordo contigo que a melhor forma de backup é apenas copiar o banco e substituí-lo depois, deu td certo, mas..... pra dá uma "melhorada" digamos, você sab algum comando que eu poderia estar utilizando pra "atualizar" logo após a restauração ou algum comando que saia e retorne a aplicação em seguida? Pois verifiquei que ele só retorna a utilizar o banco antigo após o encerramento da aplicação. já tentei fechar/habilitar o IBDataBase e o IBTransaction, mas não adiantou, d qlq forma, agradeço mesmo assim e + 1 vez a atenção dada à resposta anterior! Abraço...

Link para o comentário
Compartilhar em outros sites

  • 0

opa

Eu faria assim, faça um .EXE chamado Backup.exe por

exemplo, e este backup.exe ficaria na mesma pasta

do seu aplicativo principal, então quando for ser feito

o Backup, o programa principal abre o backup.exe e

se fecha, o backup.exe faz seus procedimentos e depois

que terminar abre o aplicativo principal novamente, assim

você não vai ter esse problema...

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...