Ver Mensaje Individual
  #5  
Antiguo 24-08-2011
pescriba pescriba is offline
Miembro
 
Registrado: may 2003
Posts: 28
Reputación: 0
pescriba Va por buen camino
otra posibilidad

A mi me seguía pasando ese error. Es una empresa pequeña donde no hay problema en decir a las tres personas que cierren el programa.

Sólo se puede hacer el restore en la máquina donde está la base de datos.

Hay que cambiar la conexión de la base de datos a local ANTES de hacer el restore. Si la base de datos está en REMOTO, no cierra todo y aparece el error... Otra posibilidad es usar un programa externo SOLO para hacer backups/Restore...

Código Delphi [-]
     Memo1.Align := alClient;
      Memo1.Visible := True;
      Memo1.Lines.Clear;
      dmGeneral.IBRestore1.DatabaseName.Clear;

      temp := RightStr(dmGeneral.db.DatabaseName,
        Length(dmGeneral.db.DatabaseName)-
        Pos(':',dmGeneral.db.DatabaseName));

      dmGeneral.IBRestore1.DatabaseName.Add(temp);

      dmGeneral.IBRestore1.Active := True;
      dmGeneral.IBRestore1.BackupFile.Clear;
      dmGeneral.IBRestore1.BackupFile.Add( OpenDialog1.FileName);

    temp2:=dmGeneral.db.DatabaseName;

    dmGeneral.IBTransaction1.Active := False;
    dmGeneral.db.CloseDataSets;
    dmGeneral.db.Connected := False;
    dmGeneral.db.DatabaseName := temp; // Camino a la base de datos MODO LOCAL
    dmGeneral.db.Open;
    Sleep(2000);
    dmGeneral.IBTransaction1.Active := False;
    dmGeneral.db.CloseDataSets;
    dmGeneral.db.Connected := False;

      dmGeneral.IBRestore1.ServiceStart;
      while not dmGeneral.IBRestore1.Eof do begin
        Memo1.Lines.Add(dmGeneral.IBRestore1.GetNextLine);
        Application.ProcessMessages;
      end;
    end;
  Memo1.Visible := False;
  dmGeneral.db.DatabaseName := temp2;
  dmGeneral.db.Open;
Responder Con Cita