IBBackUpService ve IBRestoreService (Yedekleme)

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

IBBackUpService ve IBRestoreService (Yedekleme)

Mesaj gönderen Fatih! »

IBBackUpService ve IBRestoreService bileşenleriyle Inteerbase/Firebird Veritabanını kolayca yedekleyebilir aldığımız Geri yükleyebiliriz.

Öncelikle her iki bileşen için kullanacağımız özellikleri bir procedure tanımlayalım. Procedremiz aşağıdaki gibi tanımlayalım.

Kod: Tümünü seç

 procedure TForm1.OnAyarlar(Service: TIBCustomService);
begin
  with Service do
  begin
    Active := False;
     ServerName :='localhost'; {*pc'nin adı veya ip  adresi. Ağdaki ve ya kendi  pc'niz olabilir. Kendi bilgisayarım olduğu için localhost yazdım*}
    Protocol :=TCP; {*Basğlantı protokol tipi. Diğer seçenekler için    Bileşeni seçip Object Inspectordan bakabilirsiniz.*}
    LoginPrompt := False; {* Şifreyi biz gireceğimiz için False Yapıyoruz.*}
    Params.Clear; // Params özelliğini tyemizle
    Params.Add('user_name=' +'SYSDBA'); //SYSDBA=kullanıcı adı
    Params.Add('password=' + 'masterkey'); //masterkey=Şifre
  end; //with
  // ProgressBar Özelliklerini ayarla
  ProgressBar1.Min:=0;
  ProgressBar1.Max:=10;
  ProgressBar1.Position:=ProgressBar1.Min;
  Panel1.Show;
  application.ProcessMessages;
end; 
ben formumu aşağıdaki şekilde tasarladım. Sizde keyfinize göre formunuzu tasarlayın. Formunuza birer IBBackupService, IBRestoreService, OpenDialog, PageControl (iki tab ekleyin), Panel, ProgressBar, 7 Label, 4 Edit ve iki button ekleyin.

Resim

4 Editin OnClick Olayına aşağıdaki ortak kodu yazın.

Kod: Tümünü seç

 if opendialog1.Execute then
(sender as tedit).Text:=opendialog1.FileName; 
IBBackUpServiceBackUp Buttonunun OnClick olayına aşağıdaki kodu yazım. Yedekleme işlemini test edebilirsiniz.

Kod: Tümünü seç

 with IBBackupService1 do
  begin
  //procedureyi çağır.
    OnAyarlar(IBBackupService1);
//PrograssBar İçin Gerekli
    Verbose := True;
//yedeklenecek veritanaı yolu
    DatabaseName :=Edit1.text;
    BackupFile.Clear;
{* yedeklemenin yapılacağı konum ve yedek dosyasının adı. ikinci parametre olan =2048 sanırım yedekleme yapılırken verinin kaçar byte olarak kopyalanacağını belirliyor. *}
    BackupFile.Add(Edit2.text+' =2048');
     try
      Active := True;
//      yedeklemeye başla
      ServiceStart;
      while not EOF do
             Begin
//yedekleme durumunu labela yaz
     Label5.Caption:=GetNextLine;
       {*Progresbar özelliklerini ayarla*}
     if ProgressBar1.Position=ProgressBar1.Max then
     ProgressBar1.Position:=0;
     ProgressBar1.Position:=ProgressBar1.Position+1;
     application.ProcessMessages;
End;
    finally
      Active := False;
      Panel1.Hide;
    end; //try
  end; //with 
Options ÖzellikleriIgnoreChecksum > Veritabanı yedeklenirken hata oluşması sırasında oluşabilecek hataları gözardı eder.

IgnoreLimbo > Belirsizlik Durumda Transactionları gözardı eder.
MetadataOnly > Kayıtları yedek almayıp sadece veritabanını yedekler.
NoGarbageCollection > Silinmiş kayıtlarıda yedekler.
NonTransportable > daha hızlı yedekleme yapar ancak yedek başka platformlarda restore edilmez.

IBRestoreService
Restore buttonunun OnClick olayına aşağıdaki kodu yazın.

Kod: Tümünü seç

 with IBRestoreService1 do
  begin
  //procedureyi çağır.
    OnAyarlar(IBRestoreService1);
//PrograssBar İçin Gerekli
    Verbose := True;
{* Restore ederken Veritabanının PageeSize
özelliğini ayarla. farklı bir seçeneği seçebilirsiniiz*}
    Pagesize:=2048;
//eski veritabanını sil
    Options := [Replace];
    //yedeklenecek veritanaı yolu
DatabaseName.Clear;
    DatabaseName.Add(Edit4.text);
    BackupFile.Clear;
{* yedeklemenin yapılacağı konum ve yedek dosyasının adı. *}
BackupFile.Add(Edit3.text);
     try
      Active := True;
//      yedeklemeye başla
      ServiceStart;
      while not EOF do
             Begin
//yedekleme durumunu labela yaz
     Label5.Caption:=GetNextLine;
       {*Progresbar özelliklerini ayarla*}
     if ProgressBar1.Position=ProgressBar1.Max then
     ProgressBar1.Position:=0;
     ProgressBar1.Position:=ProgressBar1.Position+1;
     application.ProcessMessages;
             End;
    finally
      Active := False;
      Panel1.Hide;
    end; //try
  end; //with 
Options Özellikleri
DeactivateIndexes > İndexleri tekrar oluşturmaz.
NoValidityCheck > kısıtlamaları oluşturmaz.
Replace > Restore edilen yerde veritabanı varsa üstüne yazar
Cevapla