Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   No puedo hacer restore de una bdd firebird en delphi (https://www.clubdelphi.com/foros/showthread.php?t=39766)

Gaby123 29-01-2007 18:54:22

No puedo hacer restore de una bdd firebird en delphi
 
hola.
tengo una aplicación con una base de datos.fdb y la uso con el componente Tibdatabase en delphi 7.
desde delphi le hago un backup con un tibservicebackup y lo hace perfecto pero si trato de hacerle el restore con el tibrestoreservice, a pesar de que desconecto la base de datos, y desactivo el ibtransaction me dice un error: " EIBInterBaseError with message 'lock time-out on wait transaction' object c:\...\basededatos.fdb is in use could not drop database c:\...\basededatos.fdb (database migth be in use)"
este es el codigo:
Código Delphi [-]
    
    basededatos.close;
    basededatos.Connected := false;
    IBTransaction1.Active:=false;
      try
        srvRestore.Attach;
        if srvRestore.Active = true then
          srvRestore.BackupFile.CLEAR;
        srvRestore.BackupFile.add(dbdestino);
        srvRestore.DatabaseName.clear;
        srvRestore.DatabaseName.add(dbcopiar);
        try
          srvRestore.ServiceStart;
//     ShowMessage('Archivo restaurado con éxito '+FormatDateTime('dd-mm-yyyy',date)+' '+timetostr(time));
        except
  //   ShowMessage('ERROR AL RESPALDAR LA BASE DE DATOS');
        end;
    Application.Terminate;
No se como hacer para q libere la bdd, espero que me puedan ayudar.
Gracias

Gaby123 30-01-2007 17:18:42

por favor diganme cualquier cosa que pueda intentar con esto
 
hola, de verdad a nadie le ha pasado esto?, o no se les ocurre algo, aunque sea una sugerencia para intentar...de verdad ya no se me ocurre nada mas a mi...
Gracias

Casimiro Notevi 30-01-2007 21:30:57

Te copio un trozo de código que puede que te sirva:
(ibR es el TIBRestoreService)
Código:

with ibR do
        begin
            if cProtocolo = 'Local' then
            begin
                ServerName := '';
                Protocol := Local;
            end
            else
            begin
                Protocol := TCP;
                ServerName := cServer;
            end;
            //
            LoginPrompt := False;
            Params.Add('user_name=SYSDBA');
            Params.Add('password=masterkey');
            Active := True;
            try
                Application.ProcessMessages;
                //
                Verbose := True;
                Options := [OneRelationAtATime,Replace,CreateNewDB];
                PageBuffers := 3000;
                PageSize := 8192;
                DatabaseName.Add( cBD_GDB );
                BackupFile.Add( cBD_GBK );
                ServiceStart;
                While not Eof do
                    mmVer.Lines.Add(GetNextLine);
            finally
                Active := False;
                //
                Application.ProcessMessages;
            end;
        end;



La franja horaria es GMT +2. Ahora son las 14:39:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi