[ franjo_tahi2 @ 18.09.2014. 08:56 ] @
Koristim TIBBackupService za backup FB baza podataka.
Da li postoji način da se backup veže sa progressbarom, tj. da se sazna max vrijdnost za progressbar? Nisam uspio ništa pronači na web-u.

verbose me ne zadovoljava, ne trebaju mi linije izvršenja već progress, da korisnik zna koliko mu je ostalo do kraja (bar približno) i da se program nije zamrznuo.
[ captPicard @ 18.09.2014. 11:04 ] @
Nisam isprobao, ali probaj ovo: Progress bar
Koliko sam skužio, gleda lines koje se izvršavaju i ovisno o tome daje postotke.
[ komplikator @ 18.09.2014. 12:32 ] @
Doduše ja radim s IBDAC kontrolama, no mislim da je smisao isti.

Kod mene:
Code:

... isječak
with bs1 do
        begin
          Server := Config.dbCon.Server;
          Database := Config.dbCon.Database;
          Username := Config.dbCon.Username;
          Password := Config.dbCon.Password;
          ClientLibrary := Config.dbCon.ClientLibrary;
          LoginPrompt := Config.dbCon.LoginPrompt;
          BackupFile.Clear;
          BackupFile.Add( TITHelper.addslash( Config.Path.BackupTemp ) + dbn + '.FBK' );
          Verbose := True;
          Attach;
        end;
      try
        bs1.ServiceStart;
        while not bs1.Eof do
          begin
            meProgress.Lines.Add( bs1.GetNextLine );
            if pbProgress.Position >= pbProgress.Max
            then
              pbProgress.Position := pbProgress.Min;
            pbProgress.StepIt;
            Application.ProcessMessages;
          end;
      finally
        bs1.Detach;
        CodeSite.SendNote( 'BACKUP STOP SVC' );
      end;


Kroz ovu petlju backup service vraća poruke koliko i što je odradio i napredak, odnosno šalje poruke.
Nisam gleda, postoji li i kakav recordcount, zadovoljio sam se samo hvatanjem poruka u log i kakvim-takvim progressom.

Inače imam složen mehanizam za gbak i nbackup, kroz TIBCBackupService i lokalno na svakom klijentu mogu pamtiti podatke o inkrementalnim backupovima na nivou svake baze i generaciji kopija, a kod gbak-a. održavam maksimum n generacija backupova, a prijašnje brišem. Plus dodatno mogućnost zipanja backupova. Nbackup mi je draži jer za izradu backupova na klijent ne moram koristiti zavrzlame sa sheranim backup folderom na serveru.

Realno ne možeš znati koliko on ima posla za odraditi. Primjer iz posta gore također ne riješava taj problem. U tom primjeru prati po ključnim riječima i segmentima backupa; koliko je odradio (koliko sam na brzinu bacio oko na kod). Najviše će vremena trošiti na backup tablica, a taj korak vrednuje jednako kao i backup svih ostalih db objekata što je nerealno.

U obradama za koje ne znam koliko traju i kolika im je krajnja vrijednost stavljam kružni progressbar i samo obavještavam koliko proces traje (razna kopiranja, obrade i sl.) i uglavnom ih radim kroz threadove i sinhroniziram podatke na forme.

Kako vi imate riješen backup IB/FB baza?
[ savkic @ 18.09.2014. 13:09 ] @
Nekoliko mogucnosti:
Koristi neki kružni progress bar (koji se stalno vrti)
Ako se radi o bekapu iste baze da svaki put sačuvaš trajanje backupa i onda kod narednog vidiš trajanje prethodnog i na osnovu toga prikažeš progress.
Da pre početka bekapa vidiš broj domena, indeksa, sve tabele i broj rekorda u njima i onda tokom bekapa pratiš gbak output i na osnovu toga vidiš gde si.

Najlakši ti je način broj 2.

[ franjo_tahi2 @ 18.09.2014. 14:37 ] @
Zahvaljujem na brzim odgovorima. Upravo sam tako i ja mislio: pamtiti posljednje vrijeme backupa i njega koristiti kao max za progressbar.
Možda probati s timerom da mi progress fino klizi... a i lakše mi je nogo pamtiti broj linija. Na predhodni backup dodam nešto vremena.
[ komplikator @ 18.09.2014. 14:45 ] @
Što ti opet može odstupati ovisno o broju aktivnih procesa, zauzetosti diska, opterećenju db servera i sl.
Sa psihološkog aspekta, korisnici se jaaaako pouzdaju u progressbar i ono što im serviraš. Ili će ti se buniti jer će po njima nešto završavati već na 80% ili će se čuditi što je progress došao do kraja, a još uvijek stoji na mjestu.
Zato je po meni kao što sam pisao umjesto gatanja iz dlana bolje im ponuditi cirkularni progress koji se kod svake odrađene linije zavrti za jedan korak i neke informacije na kraju koliko je trajalo, je li sve ok, gdje je zapisano itd.