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; 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;