Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

BackUp/Restore базы данных FireBird из моей программы. [D7, IB6.x]


Rhododendrom ©   (2009-12-21 11:46:00) 

Использую базу данных FireBird. Хочу сделать BackUp, а затем Restore. Вроде как в Delphi есть компонент IBBackupService на вкладке InterBase Admin. Тамже же есть и IBRestoreService.
Подскажите как запустить процедуру BackUp, а затем Restore.


Rhododendrom   (2009-12-23 09:33:00) [1]

ой, в функции восстановления ошибка, вот правильная:
procedure Restore(DataBase, BackUpName, UserName, Paasord:string);
begin
try
 Screen.Cursor := crHourGlass;
 with IBRestoreService1 do begin
  Params.Clear;
  Params.Add('user_name='+UserName);
  Params.Add('password='+Paasord);
  Attach();
  if Active=true then begin
   BackupFile.Add(BackUpName);
   DatabaseName.Add(DataBase);
   ServiceStart;
   while IsServiceRunning do Application.ProcessMessages;
  end;
 end;
finally
 if IBRestoreService1.Active then IBRestoreService1.Detach;
 Screen.Cursor := crDefault;
end;
end;


Rhododendrom   (2009-12-23 09:30:00) [2]

На ibase.ru нашёл демонстрацию, которая показывает как работать с палитрой Interbase Admin. В результате ковыряния получено следующее:
1. На форму помещаем компонент "IBBackupService" и "IBRestoreService" с палитры "InterBase Admin".
2. Настраиваем компоненты отключая "Login Promt"
3. Поидее в моих процедурах надо ещё передавать имя компонента, но было лень:

procedure BackUp(DataBase, BakcUpName, UserName, Password:string);
begin
try
 Screen.Cursor := crHourGlass;
 with IBBackupService1 do begin
  Params.Clear;
  Params.Add('user_name='+UserName);
  Params.Add('password='+Password);
  Attach();
  Active:=true;
  DatabaseName:=DataBase;
  BackupFile.Add(BakcUpName);
  ServiceStart;
  while IsServiceRunning do Application.ProcessMessages;
 end;
finally
 if IBBackupService1.Active then IBBackupService1.Detach;
 Screen.Cursor := crDefault;
end;
end;


procedure Restore(DataBase, BackUpName, UserName, Paasord:string);
begin
try
 Screen.Cursor := crHourGlass;
 with IBRestoreService1 do begin
  Params.Clear;
  Params.Add('user_name='+UserName);
  Params.Add('password='+Paasord);
  Attach();
  if Active=true then begin
   BackupFile.Add(BackUpName);
   DatabaseName.Add(DataBase);
   ServiceStart;
   while IsServiceRunning do Application.ProcessMessages;
  end;
 end;
finally
 if IBRestoreService1.Active then IBBackupService1.Detach;
 Screen.Cursor := crDefault;
end;
end;


Sergey13   (2009-12-22 09:18:00) [3]

> [4] mr.il   (22.12.09 06:16)

А какой смысл постоянно подсовывать бекап? Место что ли освобождать?


mr.il   (2009-12-22 06:16:00) [4]

> Я к тому, что делать СРАЗУ подряд автоматом B&R - верный путь в могилу
Чтобы от этого застраховаться, я переименовываю базу, этим одновременно проверяю не подключен ли к базе кто то.


Sergey13   (2009-12-21 12:50:00) [5]

> [2] Rhododendrom   (21.12.09 12:33)
> Зачем мне BackUp, если я потом не смогу сделать Restore?

Я к тому, что делать СРАЗУ подряд автоматомB&R - верный путь в могилу. Ресторить надо отдельно, желательно на другой машине. Потому что случаются мертвые бекапы.


Rhododendrom   (2009-12-21 12:33:00) [6]

Зачем мне BackUp, если я потом не смогу сделать Restore?
Я хотел описание как пользоваться компонентами.
За ссылку спасибо, почитаю, может найду что ищу.


Sergey13   (2009-12-21 12:07:00) [7]

На ibase.ru вроде были описания работы с IBX.

> как запустить процедуру BackUp, а затем Restore

Вот так прямо сразу друг за другом? А зачем?


Наверх

Титульная страница Поиск, карта сайта Написать письмо