☆FirebirdのBackup&Restore

TIBBackupServiceとTIBRestoreServiceを使ってFirebirdのデータベースファイルの バックアップとリストアを試してみました。
(本当はInterBaseなんだけど、Firebirdでも使えるというのが正しい表現かも知れませんね。)
フォームにコンポーネントを配置する方法だと、なぜか時々エラーが表示されるので、インスタンスを作成しています。

まずは定義及び設定部分です。
uses
  IBServices;

var
  DatabaseName, BackupFile: String;
  UserName, PW: String;

procedure TForm1.FormCreate(Sender: TObject);
var
  Path: String;
begin
  // c:\test\test.gdbをC:\test\bakにバックアップする場合
  Path := 'C:\Test\';
  DatabaseName := Path + 'test.gdb';
  BackupFile := Path + 'bak\test.bak';
  UserName := 'USERNAME';
  PW := '********'
end;

バックアップ処理です。
// バックアップ Backup
procedure TForm1.Button1Click(Sender: TObject);
var
  IBBackupService1: TIBBackupService;
begin
  IBBackupService1:= TIBBackupService.Create(nil);
  try
    IBBackupService1.LoginPrompt := False;
    IBBackupService1.Protocol := TCP;
    IBBackupService1.ServerName := 'localhost';
    IBBackupService1.Params.Add('user_name=' + UserName);
    IBBackupService1.Params.Add('password=' + PW);
    IBBackupService1.DatabaseName := DatabaseName;
    IBBackupService1.BackupFile.Add(BackupFile);

    IBBackupService1.Active := True;
    try
      IBBackupService1.ServiceStart;
    finally
      IBBackupService1.Active := False;
    end;
  finally
    IBBackupService1.Free;
  end;
end;

リストア処理です。
// リストア Restore
procedure TForm1.Button2Click(Sender: TObject);
var
IBRestoreService1: TIBRestoreService;
begin
  IBRestoreService1:= TIBRestoreService.Create(nil);
  try
    IBRestoreService1.LoginPrompt := False;
    IBRestoreService1.Protocol := TCP;
    IBRestoreService1.ServerName := 'Localhost';
    IBRestoreService1.Params.Add('user_name=' + UserName);
    IBRestoreService1.Params.Add('password=' + PW);
    IBRestoreService1.DatabaseName.Add(DatabaseName);
    IBRestoreService1.BackupFile.Add(BackupFile);
    IBRestoreService1.Options := IBRestoreService1.Options + [Replace];
    IBRestoreService1.Active := True;
    try
      IBRestoreService1.ServiceStart;
    finally
      IBRestoreService1.Active := False;
    end;
  finally
    IBRestoreService1.Free;
  end;
end;

DelphiはBDS2006PRO、Firebirdは、Firebird-1.5.4.4910-0で試しました。
エラー処理は行っていません。

重要
本稼動しているデータベースに試すことは避けて下さい。
あくまで、サンプルなので、何が起こるかわかりません。

|