-
Rhododendrom (21.12.09 11:46) [0]Использую базу данных FireBird. Хочу сделать BackUp, а затем Restore. Вроде как в Delphi есть компонент IBBackupService на вкладке InterBase Admin. Тамже же есть и IBRestoreService.
Подскажите как запустить процедуру BackUp, а затем Restore. -
На ibase.ru вроде были описания работы с IBX.
> как запустить процедуру BackUp, а затем Restore
Вот так прямо сразу друг за другом? А зачем? -
Rhododendrom (21.12.09 12:33) [2]Зачем мне BackUp, если я потом не смогу сделать Restore?
Я хотел описание как пользоваться компонентами.
За ссылку спасибо, почитаю, может найду что ищу. -
> [2] Rhododendrom (21.12.09 12:33)
> Зачем мне BackUp, если я потом не смогу сделать Restore?
Я к тому, что делать СРАЗУ подряд автоматом B&R - верный путь в могилу. Ресторить надо отдельно, желательно на другой машине. Потому что случаются мертвые бекапы. -
mr.il (22.12.09 06:16) [4]> Я к тому, что делать СРАЗУ подряд автоматом B&R - верный путь в могилу
Чтобы от этого застраховаться, я переименовываю базу, этим одновременно проверяю не подключен ли к базе кто то. -
> [4] mr.il (22.12.09 06:16)
А какой смысл постоянно подсовывать бекап? Место что ли освобождать? -
Rhododendrom (23.12.09 09:30) [6]На 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; -
Rhododendrom (23.12.09 09:33) [7]ой, в функции восстановления ошибка, вот правильная: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;