Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: Yedekleme (Firebird/Interbase)  (Okunma sayısı 5794 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Yedekleme (Firebird/Interbase)
« : 09 Ekim 2005 15:50:17 »
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: [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.



4 Editin OnClick Olayına aşağıdaki ortak kodu yazın.
Kod: [Seç]
if opendialog1.Execute then
(sender as tedit).Text:=opendialog1.FileName;


IBBackUpService
BackUp Buttonunun OnClick olayına aşağıdaki kodu yazım. Yedekleme işlemini test edebilirsiniz.
Kod: [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 Özellikleri
IgnoreChecksum > 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: [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
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Yedekleme (Firebird/Interbase)
« Yanıtla #1 : 09 Ekim 2005 18:01:16 »
Alıntı yapılan: gercek


merhabalar bu örneği projemde kullandım.

şöyle bir şey dikkatimi çekti

bemim kendi hazırladığım veri tabanının büyüklüğü 1296 kb, bunu silip

backup ladığım dosyayı Restore ettim bu dosyanın büyüklüğü 432 kb

bu fark neden kaynaklanıyor, bu durum normal mi?

teşekkürler..



Firebirdde veritabanına yazılan kayıtlar silinmez. silindi diye bir işaret atar ve silinmiş gibi görünür.
bu sebeple veritabanı 5 mb olduktan sonra boşaltsanız dahi yine de 5 mb boyutundadır.
Bu işlemde silinmiş verileri fiziksel olarakta siler. sonuçta orjinal boyut ortaya çıkar.
silinen kayıtları geri getirebilir miyim diye sorarsan.
Bilgim dahilinde "Hayır" derim
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı Gezgin

  • Üye
  • ***
  • İleti: 47
  • Rep: +0/-0
  • Cinsiyet: Bay
    • Tuncnet
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #2 : 25 Şubat 2006 12:00:05 »
Merhaba.Evet Firebird veya interbase veritabanlarında Backup Restore yaptıgın zaman database deki tmp ler silinir.Boş ve gereksiz kayıtlar silinir.Bu da vt nin boyutunun küçülmesine neden olur.Bir sorun olmaz yani. Mesela ben büyük bir hastanenin bilgi işlem yöneticisiyim.1010 MB olan vt yi backup restore yapınca 907 MB düşüyor. Ama veri kaybım yok.Rahatça kullanabilirsin.Kolay gelsinn

Çevrimdışı kenanbayrak

  • Yeni Üye
  • *
  • İleti: 4
  • Rep: +0/-0
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #3 : 01 Mart 2006 00:47:56 »
Merhaba ;

Yedekleme (Firebird/Interbase) makalesinde anlatılan her şeyi yaptım
Ancak Backup butonuna basınca şöyle bir hata veriyor .

Project Yedekleme.exe raised exception class EIBClientError with message 'SPB Contact Unknown'.
Process stoped. Use Step or Run to continue.

Konunun çözümünü bilen varmı?

Teşekkürler.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #4 : 01 Mart 2006 10:00:41 »
bu hata ile hiç bir şey anlaşılmıyor. projeyi delphi dışında çalıştırıp verdiği hatayı yazar mısınız?
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı kenanbayrak

  • Yeni Üye
  • *
  • İleti: 4
  • Rep: +0/-0
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #5 : 01 Mart 2006 13:28:49 »
Hazırladığım projeyi Delphi dışında çalıştırınca aşağıdaki gibi hata veriyor.

SPB Constant Unknown.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #6 : 01 Mart 2006 14:03:06 »
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı taha

  • Kıdemli Üye
  • *****
  • İleti: 63
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #8 : 31 Temmuz 2006 12:29:42 »
Selam arkadaşlar,

Yeni bir konu açmak istemedim. Benim sorunum Yedekleme işlemini yapıyor ama Geri Yükleme işlemi sırasında bir hata veriyor. Verdiği hata,



Forumda paylaşılan "Adres Defteri" programını delphide açıp çalıştırıyorum çok güzel çalışıyor. Yani IB bileşenlerini güncellememe gerek yok sanırım.

Aşağıda yazdığım kodlar bulunmaktadır.

Yardımlarınızı bekliyorum. Şimdiden teşekkürler...


BackUp Kodları:

Kod: [Seç]
IBBackupService1.Params.Clear;
 IBBackupService1.Params.Add(dm.dbsTaha.Params.Strings[0]);
 IBBackupService1.Params.Add(dm.dbsTaha.Params.Strings[1]);
 IBBackupService1.BackupFile.Clear;
 IBBackupService1.BackupFile.Add('C:\Deneme\Veri Yedek\taha.gbk =2048');
 IBBackupService1.DatabaseName:=Label1.Caption; {Label1.Caption:='C:\Deneme\Veri\TAHA.FDB'}
 Dm.dstBurscu.Close;
 Dm.dstBurslar.Close;
 Dm.dbsTaha.Connected:=False;
 with IBBackupService1 do
   begin
  Active := True;
     try
       ServiceStart;

     finally
       Active := False;
       Application.MessageBox('İşlem Tamam','Uyarı',MB_OK);
     end;
   end;
 Dm.dbsTaha.Connected:=True;
 Dm.dstBurscu.Open;
 Dm.dstBurslar.Open;

ReStore Kodları;

Kod: [Seç]
IBRestoreService1.Params.Clear;
 IBRestoreService1.Params.Add(Dm.dbsTaha.Params.Strings[0]);
 IBRestoreService1.Params.Add(Dm.dbsTaha.Params.Strings[1]);
 IBRestoreService1.BackupFile.Clear;
 IBRestoreService1.BackupFile.Add('C:\Deneme\Veri Yedek\taha.gbk');
 IBRestoreService1.DatabaseName.Add('C:\Deneme\Veri\TAHA.FDB');
 Dm.dstBurscu.Close;
 Dm.dstBurslar.Close;
 Dm.dbsTaha.Connected:=False;
 with IBRestoreService1 do
   begin
  Active := True;
     try
       ServiceStart;

     finally
       Active := False;
       Application.MessageBox('İşlem Tamam','Uyarı',MB_OK);
     end;
   end;
 Dm.dbsTaha.Connected:=True;
 Dm.dstBurscu.Open;
 Dm.dstBurslar.Open;
"Bilgisizlerin geçtikleri mevkiye yaptığı fenalığı, yüzlerce aslan bir araya gelse yapamaz" MEVLANA

Çevrimdışı taha

  • Kıdemli Üye
  • *****
  • İleti: 63
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #9 : 31 Temmuz 2006 16:12:27 »
Şu anda restore işlemini de yapıyor ama şöyle bir sorun var. İlk önce database'in yedeğini alıyorum yapıyor. Sonra geri yükleme yapıyorum yüklüyor. Eğer tekrar yedeğini alırsam ve geri yükleme yaparsam aşağıdaki hatayı veriyor.



Sorun ne hala anlamadım. Ve nasıl geri yükleme yaptığını da anlamadım yukarıda yazan hiçbir komutu değiştirmedim.
"Bilgisizlerin geçtikleri mevkiye yaptığı fenalığı, yüzlerce aslan bir araya gelse yapamaz" MEVLANA

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #10 : 31 Temmuz 2006 16:54:59 »
1.Mesajındaki sorunu çözmek içiin:
Kod: [Seç]
IBRestoreService1.DatabaseName.Add('C:\Deneme\Veri\TAHA.FDB');
kodundan aşağıdaki kodu yaz
Kod: [Seç]
IBRestoreService1.DatabaseName.Clear;
2.Mesajındaki sorun ise veritabannın kullanımda olmasından kaynaklanıyor
« Son Düzenleme: 31 Temmuz 2006 16:55:39 by Fatih »
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı Amuzende

  • Üye
  • ***
  • İleti: 39
  • Rep: +1/-0
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #11 : 26 Haziran 2008 08:40:20 »
Kodları aynen yazdım ve çalıştırdım. bir sorun çıkmadan yedeği aldı fakat geri yükleme yaptığımda

Unsupported on-disk structure for file c:\deneme.fdb; found 32779

hatasını veriyor. Yardımcı olursanız sevinirim ;)

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #12 : 26 Haziran 2008 09:14:02 »
Yedeklenen veritabanı ile kullandığıız Firebird sürümü uyuşmuyor. 2.1 ile yedekkleyip, 1.5 ile geri yüklemeye çalıştığınızda böyle bir hata alabilirsiniz.
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı Amuzende

  • Üye
  • ***
  • İleti: 39
  • Rep: +1/-0
Ynt: Yedekleme (Firebird/Interbase)
« Yanıtla #13 : 26 Haziran 2008 10:33:21 »
Yedeklenen veritabanı ile kullandığıız Firebird sürümü uyuşmuyor. 2.1 ile yedekkleyip, 1.5 ile geri yüklemeye çalıştığınızda böyle bir hata alabilirsiniz.

Nasıl yani bütün bunları aynı program içerisinde yapıyorum. 2.1 ile yedekleyip 1.5 ile geri yükleme nasıl yapıyor bu program anlamadım ???

Peki bunu nasıl düzeltirim? Bir öneriniz var mı? ???