Autor Téma: Logovanie postupu zálohy do mema + progressbar  (Přečteno 3017 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #15 kdy: 07-09-2020, 16:46:19 »
Ak som zrušil pripojenie v design time, tak to funguje. Teraz už len zistiť prečo, ako to funguje?
Edit:
Už som na to prišiel.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 441
  • Karma: 9
    • Verze Delphi: XE2
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #16 kdy: 07-09-2020, 16:51:22 »
A dtmdBasic.conFoc.Connected := False; robí čo? Žijem v tom, že ju odpojí od DBMS.
A nezapomeň počítat s tím že pokud bude aplikace běžet v síti nebude ti používaný postup vůbec fungovat.
Kvůli těmto problémům jsem kompletně přešel na gbak.exe a neobnovuji data napřímo ale přes pracovní "Restore" databázi

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #17 kdy: 07-09-2020, 16:58:42 »
A dtmdBasic.conFoc.Connected := False; robí čo? Žijem v tom, že ju odpojí od DBMS.
A nezapomeň počítat s tím že pokud bude aplikace běžet v síti nebude ti používaný postup vůbec fungovat.
Kvůli těmto problémům jsem kompletně přešel na gbak.exe a neobnovuji data napřímo ale přes pracovní "Restore" databázi
S tým počítam. Teraz to neriešim. Aj tak nemám sieťovú verziu FireDAC.
.
Hm, z môjho pohľadu je to postavené na hlavu. Pri vývoji aplikácie potrebujem byť pripojený k DB. Pred build či spustení v design time ju musím mať odpojenú.
Vyskúšal som v kóde CheckInactive, ale nezbralo.
To sa ako dá dosiahnuť? Lebo na to na 100 % zabudnem.
.
Pri testovaní používam roReplace. Ale toto i Rewrite nazývajú zabijakom DB. Uvažujem o nasledovnom postupe:
  • Premenujem svoju DB
  • Po úspechu ju zmažem
  • Pri neúspechu zmažem novo vytvorenú DB
  • Mojem DB vrátim pôvodný názov
Je to správny postup, alebo mám na to ísť ináč? Nebudem mať niekoľko GB databázu.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 441
  • Karma: 9
    • Verze Delphi: XE2
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #18 kdy: 07-09-2020, 17:12:56 »
S tým počítam. Teraz to neriešim. Aj tak nemám sieťovú verziu FireDAC.

IMHO - pokud se nezmění distribuční podmínky Firedac - tak sitovou verzi dost těžko aplikuješ (cena nákupu licence   s porovnáním prodejní ceny softu)
Pak je samozřejmě otázkou zda JEN lokální verze bude pro budoucí uživatele použitelná v ostrém nasazení

Citace
. Uvažujem o nasledovnom postupe:
  • Premenujem svoju DB
  • Po úspechu ju zmažem
  • Pri neúspechu zmažem novo vytvorenú DB
  • Mojem DB vrátim pôvodný názov

Když už tak možná spíše takto
  • Obnovím DB z archivu
  • Po úspechu  přejmenuji původní DB
  • Obnovené DB vrátím původní nazev

Nebo celé přehození řeším pomocí aliasu



Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #19 kdy: 07-09-2020, 17:22:40 »
Citace
IMHO - pokud se nezmění distribuční podmínky Firedac - tak sitovou verzi dost těžko aplikuješ (cena nákupu licence   s porovnáním prodejní ceny softu)
Pak je samozřejmě otázkou zda JEN lokální verze bude pro budoucí uživatele použitelná v ostrém nasazení
Do úvahy to prichádza len v prípade úspechu a zájmu o sieťovú verziu. Osobne tomu veľmi neverím. Najviac ma štve, že ma nútia kúpiť si veci o ktoré vôbec nestojím. Pri XE7 som si dokúpil len povolenie sieťovej verzie. Niečo cez 600 €. Aj preto som veľmi silne váhal s prechodom na ver. 10.4.
.
Načo mi po úspechu bude pôvodná DB? Za chvíľu ich tam budem mať nasekaných na desiatky. To už poriadne uberú miesto z disku. Veď predsa mám zálohy, ktoré sú podstatne menšie.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 441
  • Karma: 9
    • Verze Delphi: XE2
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #20 kdy: 07-09-2020, 17:30:12 »

Načo mi po úspechu bude pôvodná DB? Za chvíľu ich tam budem mať nasekaných na desiatky. To už poriadne uberú miesto z disku. .

No nejsem si moc jistý , ale nestačilo by - po úspěšném provedení celé obnovovací operace, použít DeleteFile('BackUpDB.bak')

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #21 kdy: 07-09-2020, 17:46:44 »
Jednu kópiu beriem. Viac nie.
Správu záložných súborov nechám na užívateľovi. Každý rozmýšľame a zmätkujeme ináč :)
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 441
  • Karma: 9
    • Verze Delphi: XE2
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #22 kdy: 07-09-2020, 18:53:57 »
Jednu kópiu beriem. Viac nie.
Správu záložných súborov nechám na užívateľovi. Každý rozmýšľame a zmätkujeme ináč :)
Svatá pravda - já myslel že řešíme obnovu a ne zálohy  ;)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3335
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #23 kdy: 07-09-2020, 18:55:14 »
Správu záložných súborov nechám na užívateľovi. Každý rozmýšľame a zmätkujeme ináč :)
Zalezi na aplikaci, ale leckde, kde se jede v realnem case a vedle obsahu DB existuje nezavisle na obsahu DB realny stav to zase s libovolnou obnovou dat neni jen tak :-)

Ja jsem treba naposledy u pilotniho projektu s MSSQL pouzil batch (a uz to tam zustalo), ktery spoustim z sluzby bezici na serveru (vynatek):
Kód: Text [Vybrat]
  1. :COMPOSE_FILENAME
  2.     call _GetISO8601DateTime.bat
  3.     set DATESTAMP=%_ISODATE:~0,4%%_ISODATE:~5,2%%_ISODATE:~8,2%T%_ISODATE:~11,2%%_ISODATE:~14,2%
  4.     set BACKUPFILENAME=%BACKUPPATH%\%DATABASENAME%_%DATESTAMP%_%STATUS%.bak
  5.     set ZIPFILENAME=%BACKUPPATH%\%DATABASENAME%_%DATESTAMP%_%STATUS%.zip
  6.     echo ... going to backup to %BACKUPFILENAME%
  7.  
  8. :: Execute backup
  9.     sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT"
  10.     %ZIP% -add "%ZIPFILENAME%" "%BACKUPFILENAME%"
  11.     %ZIP% -test "%ZIPFILENAME%"
  12.     if errorlevel 1 goto ERR_ZIP
  13.     if exist "%ZIPFILENAME%" DEL "%BACKUPFILENAME%"
  14.  
  15.  
  16. :: In this case, we are choosing to keep the most recent 50 .bak files
  17.     echo ... purging backup folder %BACKUPPATH%
  18.     for /f "skip=50 delims=" %%F in ('dir %BACKUPPATH%\*.zip /s/b/o-d/a-d') do del "%%F"
  19.     echo Done
  20.     echo .
  21.     goto :EOF
  22.  

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #24 kdy: 07-09-2020, 19:00:16 »
Citace
Svatá pravda - já myslel že řešíme obnovu a ne zálohy 
Ale to máš pravdu! Teraz naozaj riešim obnovu. Alebo nerozumiem ironickej poznámke ???  Ja som sa už so sebou dohodol.
U mňa to bude na 99 % jedno užívateľská aplikácia. Jedna DB na jedinom PC a prihlásený vždy len jediný užívateľ. Tým pádom mám najjednoduchší možný prípad.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #25 kdy: 07-09-2020, 20:16:21 »
Vraciam sa k pôvodnej otázke:
  • Ako sa dá riešiť výstup do TMemo? Čítať to zo súboru, do ktorého to je, predpokladám, priebežne ukladané?
Je to vôbec možné pri komponentoch TFDIBBackup a TFDIBRestore? Nemajú totiž parametre/vlastnosť na generovanie výpisu do súboru.

W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #26 kdy: 07-09-2020, 20:23:23 »
Pre istotu tú dávam svoj výtvor
Kód: [Vybrat]
procedure TfrmRestoreDB.RestoreDB;
var
  DataDir: string;
begin
  SetParams(DataDir);
.
  try
    if dtmdBasic.conFoc.InTransaction then
    begin
        TBasicFunction.FaultDialog('Obnova DB', 'Aktívna transakcia.', 'Musíte najprv ukončiť VŠETKY transakcie.',
        Exit;
    end;
.
    dtmdBasic.conFoc.Connected := False;
    if not DoRestoreDB(DataDir) then
      Exit;
.
  // 2 Po úspechu  přejmenuji původní DB
    if not RenameFile(DataDir + 'JASOTSVB.FDB', DataDir + 'JASOTSVB.BAK') then
    begin
        TBasicFunction.FaultDialog('Obnova DB', 'JASOTSVB.FDB', 'Zlyhalo premenovanie pôvodnéhe súboru.',
        Exit;
    end;
.
  // 3 Obnovené DB vrátím původní nazev
    if not RenameFile(DataDir + 'JASOTSVB1.FDB', DataDir + 'JASOTSVB.FDB') then
    begin
        TBasicFunction.FaultDialog('Obnova DB', 'JASOTSVB.FDB', 'Zlyhalo premenovanie nového súboru.',
        Exit;
    end;
.
    dtmdBasic.conFoc.Connected := True;
  except
  end;
end;
.
function TfrmRestoreDB.DoRestoreDB(var DataDir: string): Boolean;
begin
  // 1 Obnovím DB z archivu
  if FileExists(DataDir + 'JASOTSVB1.FDB') then
  begin
    if not DeleteFile(DataDir + 'JASOTSVB1.FDB') then
    begin
      TBasicFunction.FaultDialog('Obnova DB', 'JASOTSVB1.FDB', 'Zlyhalo zmazanie záložného súboru.',
      Exit(False);
    end;
  end;
.
  if FileExists(DataDir + 'JASOTSVB.BAK') then
  begin
    if not DeleteFile(DataDir + 'JASOTSVB.BAK') then
    begin
      TBasicFunction.FaultDialog('Obnova DB', 'JASOTSVB.BAK', 'Zlyhalo zmazanie záložného súboru.',
      Exit(False);
    end;
  end;
.
  fdbrstrSVB.Restore;
  Result := True;end;
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3335
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #27 kdy: 08-09-2020, 07:28:54 »
Je to vôbec možné pri komponentoch TFDIBBackup a TFDIBRestore? Nemajú totiž parametre/vlastnosť na generovanie výpisu do súboru.
http://docwiki.embarcadero.com/Libraries/Rio/en/FireDAC.Phys.IBBase.TFDIBService.OnProgress

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3335
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #28 kdy: 08-09-2020, 07:31:51 »
... (DataDir + 'JASOTSVB.FDB', DataDir + 'JASOTSVB.BAK') ...
No fuuuj  :-[

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Logovanie postupu zálohy do mema + progressbar
« Odpověď #29 kdy: 08-09-2020, 12:07:21 »
Ako to mám urobiť aby to nebolo fuj? V princípe, ak to dám ako konštanty, tak sa na tom nič nezmení. Alebo?
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.