![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
Вот так прямо сразу друг за другом? А зачем?