-
FBq © (12.03.15 12:42) [0]Есть дельфи-клиент, соединяемся с FB через IBX, возможны права SYSDBA.
Как бы грамотно организовать BackUp базы с команды от клиента?
То есть, в клиенте нажал кнопочку - и сделался очередной Backup на сервере? (вся база в одном файле FDB).
Вручную писать копирование данных из всех таблиц в отдельную БД - не хочется (да и костыль это, имхо).
Подскажите, как организовать грамотно и надежно в контексте поставленной задачи? -
RWolf © (12.03.15 13:38) [1]Воспользоваться компонентом TIBBackup.
-
RWolf © (12.03.15 13:40) [2]Хотя для D7 нужной версии IBExpress нет, скорее всего. Тогда изучать Service Manager API.
-
FBq © (12.03.15 13:41) [3]там есть TIBBackupService
-
RWolf © (12.03.15 14:01) [4]Тоже подойдёт.
-
FBq © (19.03.15 16:39) [5]Я так понял бэкап встроен в движок FB, делаешь что-то вроде:IBBackupService1.BackupFile.Add('d:\lalala.bak');
IBBackupService1.ServiceStart;
IBBackupService1.Active:=false;
и движок продолжает делать бэкап, клиент может и отцепиться...
А есть какая то возможность узнать о ходе бэкапа или хотя бы узнать о завершении процесса инициализированного бэкапа? -
RWolf © (19.03.15 17:09) [6]while not IBBackupService1.Eof do
Memo1.Lines.Add(IBBackupService1.GetNextLine); -
Ega23 © (20.03.15 00:15) [7]вариантов много. Лично я бы IBEScript использовал бы. Но это dll с собой таскать надо.
-
with IBBackupService1 do
begin
DatabaseName := FBaseName;
BackupFile.Clear;
BackupFile.Add(FBackupName);
Attach;
ServiceStart;
SpTBXLabel37.Caption := rs[rsBackupDBPerform];
while not Eof do
begin
Application.ProcessMessages;
SpTBXLabel37.Caption := GetNextLine;
end;
Detach;
SpTBXLabel37.Caption := rs[rsBackupDBPerformed];
end;