Yedek Alma

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
hasan
Üye
Mesajlar: 129
Kayıt: 16 Oca 2004 10:01
Konum: Bursa
İletişim:

Yedek Alma

Mesaj gönderen hasan »

Kod: Tümünü seç

procedure TForm1.Btn_YedekleClick(Sender: TObject);
var
 gun, ay, yil            : Word;
 gun_ay_yil              : string;
 s, ServerAdi,DataYoluAdi :string;
begin

   s:=IBDataSet1PATH.AsString;  //  ( TERMINAL:C:\DATA\DEMO.GDB )
   ServerAdi    := copy(s,1,pos(':',s)-1);
   DataYoluAdi  := copy(s,pos(':',s)+1,Length(s)-pos(':',s));



 If Application.MessageBox('Yedekleme işlemi veritabanınızın boyutuna göre birkaç dakika sürebilir.'+#13#10+'Devam etmek istiyor musunuz ? ','Dikkat',4+0+32)=Idyes Then Begin
 cxGrid1.Visible:=False;
 Memo1.Visible:=True;
  DecodeDate(Date, yil, ay, gun);
  gun_ay_yil := IntToStr(gun)+'_'+IntToStr(ay) + '_' + IntToStr(yil);
  Memo1.Lines.Clear;

  with IBBackupService1 do begin
    DatabaseName :=DataYoluAdi;
    ServerName:=ServerAdi;
    Protocol :=TCP;

    Active    := True;
    Screen.Cursor := crHourGlass;
    try
      BackupFile.Clear;
      BackupFile.Add(Data_Yolu.Text+'\'+IBDataSet1KOD.AsString+'-'+gun_ay_yil+'.gbk');
      ServiceStart;
      While not Eof do
      Memo1.Lines.Add(GetNextLine);
      MessageDlg('Yedekleme başarıyla tamamlandı!',mtInformation,[mbOK], 0);
      Memo1.Lines.Clear;
    finally
      Active := False;
      Screen.Cursor := crDefault;
      cxGrid1.Visible:=True;
      Memo1.Visible:=False;
    end; 
  end; 
end;
 End;
Arkadaşlar yukarıdaki kodla Yedek alma işleminde IBBackupService1 i çift tıklayıp Connection Remote Seçip Server ve Protocolü de elle yazmassam terminal makinelerdeki datanın yedeğini alamıyorum.Hata Veriyor.Kodla olmuyor ama elle oluyor...

Kod: Tümünü seç

Cannot perform operation--Servis is attached 
hatası alıyorum.Bu konuda yardımcı olabilirseniz çok sevinecem.Aynı hatayı Restorede de yapıyor.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Hata kodundan anladığım kadarı ile siz işlemi başlattığınızda Backup service'i attach olmuş durumda muhtemelen (tıpkı TIBDabase gibi düşünün connection = True kalmış gibi) bilmem anlatabildim mi?

Yani işlemi başlatmadan önce DeAttache gibi bir şey yapılmalı diye tahmin ediyorum.

Daha önceden hiç denemedim.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

daha once sanırım mege arkadasım atmıstı kodları
ben biraz kendime uyarladım ve sorunsuz kullanıyorum
gereksiz yerleri cıkartırsınız..

Kod: Tümünü seç

procedure TFrmMain.BackupDB(DbName: string);
var
  BackupName: string;
  BackupDir: string;
begin
  BackupName := ExtractFileName(DbName);
  BackupDir := ExtractFilePath(DbName);
  BackupName := ChangeFileExt(BackupName, '.gbk');
  BackupName := BackupDir + FormatDateTime('ddmmyyy', Now) + BackupName;
  //database e baglantı
  with IBDatabase do
  begin
    Connected := False;
    DatabaseName := EdtServerIP.Text + ':' + DbName;
    Params.Add('user_name=' + ReadIni.User);
    Params.Add('password=' + ReadIni.Pass);

    Params.Clear;
    Params.Add('lc_ctype=WIN1254');
    LoginPrompt := False;
    //Connected := True;
  end;

  with IBBackupService do
  begin
    LoginPrompt := False;
    Params.Clear;
    Params.Add('user_name=' + ReadIni.User);
    Params.Add('password=' + ReadIni.Pass);
    ServerName := EdtServerIP.Text;
    Options := [IgnoreLimbo];
    Verbose := True;
    Active := True;
    try
      DatabaseName := IBDatabase.DatabaseName;
      BackupFile.Clear;
      BackupFile.Add(BackupName);
      ServiceStart;
    finally
      Active := False;
    end;
  end;
end;

procedure TFrmMain.RestoreDB(BackupName: string);
var
  DbName: string;
begin
  DbName := ChangeFileExt(BackupName, '.gdb');

  //database e baglantı
  with IBDatabase do
  begin
    Connected := False;
    DatabaseName := EdtServerIP.Text + ':' + DbName;
    Params.Add('user_name=' + ReadIni.User);
    Params.Add('password=' + ReadIni.Pass);

    Params.Clear;
    Params.Add('lc_ctype=WIN1254');
    LoginPrompt := False;
    //Connected := True;
  end;

  with IBRestoreService do
  begin
    LoginPrompt := False;
    Params.Clear;
    Params.Add('user_name=' + ReadIni.User);
    Params.Add('password=' + ReadIni.Pass);
    ServerName := EdtServerIP.Text;
    Active := True;
    try {finally}
      try {except}
        Verbose := True;
        Options := [CreateNewDB];
        PageSize := 1024;
        DatabaseName.Clear;
        BackupFile.Clear;
        BackupFile.Add(BackupName);
        DatabaseName.Clear;
        DatabaseName.Add(IBDatabase.DatabaseName);

        IBDatabase.Connected := False;
        ServiceStart;
      except
//        on E:Exception do ShowMessage(E.Message);
      end;
    finally
      Active := False;
    end;
  end;
end;
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla