(21-04-2021, Saat: 13:26)shooterman Adlı Kullanıcıdan Alıntı: Selamlar
Aşağıdaki linki takip edebilirsiniz.
https://www.delphican.com/showthread.php...+yedekleme
Hocam ta eskilerden kalma jedi komponent paketi var elimde. Yıllar önce kurmuştum ama şimdi kuramadım bir türlü. Onun için gönderdiğiniz linkteki dosyayı çalıştıramadım.
(21-04-2021, Saat: 13:53)mcuyan Adlı Kullanıcıdan Alıntı: Merhabalar. Ben FB Bckup ve Restore için FD bileşenlerini kullanıyorum. Kodlarımı alltadır. Restore işlemi de aynı mantıkla çalıştırabilirsiniz.. BCKup alıp Gün_ay_yıl şeklinde isimlendirdiğim için yukarıdaki değişkenler..
Bu arada Formunuza bir TFDIBBackup ve TFDIBRestore bileşeni eklemeniz gerekiyor.
drm := copy(dm1.ib1.DatabaseName, 11, Length(dm1.ib1.DatabaseName) - 10); adres := copy(drm, 1, Length(drm) - 8); ad := copy(drm, Length(adres) + 1, 8); DecodeDate(Date, yil, ay, gun); DecodeTime(time, saat, dk, sn, ms); gun_ay_yil := IntToStr(yil) + IntToStr(ay) + IntToStr(gun); try sonuc := ShellWait('cmd.exe', PWideChar('/C ' + 'gfix -validate db\2013.snc -user sysdba -password masterkey'), '\', True, True, True, sonuc1); sonuc := ShellWait('cmd.exe', PWideChar('/C ' + 'gfix -kill db\2013.snc -user sysdba -password masterkey'), '\', True, True, True, sonuc1); sonuc := ShellWait('cmd.exe', PWideChar('/C ' + 'gfix -sweep db\2013.snc -user sysdba -password masterkey'), '\', True, True, True, sonuc1); // Burada bakımlar yapılıyor finally Sleep(50); end; FDPhysFBDriverLink1.DriverID := 'FB'; FDPhysFBDriverLink1.VendorLib := GetCurrentDir() + '\fbclient.dll'; Backup.UserName := 'SYSDBA'; Backup.Password := 'masterkey'; Backup.Database := adres + 'DB_ad_.FBD'; Backup.Verbose := True; Backup.Host := 'localhost'; Backup.BackupFiles.Clear; Backup.BackupFiles.Add(adres + gun_ay_yil + '.fbk'); Backup.Backup; TRY zipFile(adres + gun_ay_yil + '.zip', adres + gun_ay_yil + '.fbk'); FINALLY DeleteFile(adres + gun_ay_yil + '.fbk'); END;
Hocam galiba sizin yönteminizde de komponent kurmak gerekli. Onun için bu yöntemi de kullanamam.
(21-04-2021, Saat: 17:02)MuhammedYasir Adlı Kullanıcıdan Alıntı: Yedeklemeyi şu şekilde yapmışım:
procedure TFYedekleme.BitBtn1Click(Sender: TObject); var s: string; IniFile: TIniFile; yer: string; begin IBBackupService1 := TIBBackupService.Create(nil); ForceDirectories(OnlineEdit2.Text); IniFile := TIniFile.Create(ExtractFileDir(Application.ExeName) + '\DataBase.ini'); if IniFile.ReadString(FAna.Sirket, 'Adres', '') <> '' then yer := IniFile.ReadString(FAna.Sirket, 'Adres', ''); s := OnlineEdit2.Text; if s[length(s)] <> '\' then s := s + '\'; if FileExists(s + EditDosyaAdi.Text + '.gbk') then begin ShowMessage('Bu dosya ismi ile yedekleme yapılmış, lütfen dosya ismini değiştiriniz.') end else begin Memo1.Lines.Add('YEDEKLEME BAŞLADI !..'); with IBBackupService1 do begin LoginPrompt := False; Params.Add('user_name=' + IniFile.ReadString(FAna.Sirket, 'User', '')); Params.Add('password=' + IniFile.ReadString(FAna.Sirket, 'Sifre', '')); Attach; try Verbose := True; DatabaseName := yer; if (OnlineEdit2.Text <> 'C:\') and (OnlineEdit2.Text <> 'c:\') and (OnlineEdit2.Text <> 'A:\') and (OnlineEdit2.Text <> 'a:\') and (OnlineEdit2.Text <> 'B:\') and (OnlineEdit2.Text <> 'b:\') and (OnlineEdit2.Text <> 'D:\') and (OnlineEdit2.Text <> 'd:\') and (OnlineEdit2.Text <> 'E:\') and (OnlineEdit2.Text <> 'e:\') and (OnlineEdit2.Text <> 'F:\') and (OnlineEdit2.Text <> 'f:\') then BackupFile.Add(OnlineEdit2.Text + '\' + EditDosyaAdi.Text + '.gbk') else BackupFile.Add(OnlineEdit2.Text + EditDosyaAdi.Text + '.gbk'); ServiceStart; Memo1.Lines.Clear; Memo1.Lines.Add('YEDEKLEME BAŞLADI !..'); While not Eof do Memo1.Lines.Add(GetNextLine); finally Active := False; Memo1.Lines.Add(s + EditDosyaAdi.Text + '.gbk'); Memo1.Lines.Add('YEDEKLEME BAŞARI İLE TAMAMLANDI !..'); end; end; end; IBBackupService1.Free; end;
Geri yüklemeyi de şu şekilde yapmışım:
procedure TFYedekleme.BitBtn3Click(Sender: TObject); var IniFile: TIniFile; yer: string; begin IBRestoreService1 := TIBRestoreService.Create(nil); if MessageBox(handle, 'Geri yüklemek istediğinizden emin misiniz?', 'Uyarı', MB_YESNO) = mrYes then begin Memo2.Lines.Add('GERİ YÜKLEME BAŞLADI !..'); DMVeri.IBVeri.Close; DMVeri.IBTVeri.Active := False; IniFile := TIniFile.Create(ExtractFileDir(Application.ExeName) + '\DataBase.ini'); with IBRestoreService1 do begin LoginPrompt := False; Options := [Replace, CreateNewDB]; Params.Add('user_name=' + IniFile.ReadString(FLikaPro.Sirket, 'User', '')); Params.Add('password=' + IniFile.ReadString(FLikaPro.Sirket, 'Sifre', '')); Params.Add('DEFAULT CHARACTER SET WIN1254'); Attach; try Verbose := True; PageSize := 16384; BackupFile.Add(LabeledEdit1.Text); if IniFile.ReadString(FLikaPro.Sirket, 'Adres', '') <> '' then yer := IniFile.ReadString(FLikaPro.Sirket, 'Adres', ''); DatabaseName.Add(yer); ServiceStart; Memo2.Lines.Clear; Memo2.Lines.Add('GERİ YÜKLEME BAŞLADI !..'); While not Eof do Memo2.Lines.Add(GetNextLine); finally if Active then Detach; Memo2.Lines.Add('GERİ YÜKLEME BAŞARI İLE TAMAMLANDI !..'); end; end; end; IBRestoreService1.Free; end;
Hocam gönderdiğiniz kodları kendime göre düzenlemeye çalıştım. Öncelikle yedekleme kodları için uğraştım ama Attach komutunda çalışma zamanı hata veriyor. Bu konuda acemi olduğumdan da daha ileriye gidemedim.
Değerli arkadaşlar eski dökümanlarımı karıştırınca bir şeyler buldum ve olayı çözdüm. Biraz düzenleyeyim ihtiyaç duyan arkadaşların faydalanması için buraya eklerim. Yardımcı olan herkese teşekkürler.

