Stavy databázového spojení
Aby systém založený na databázovém SQL serveru (viz Technologie zpracování dat) mohl pracovat, musí mít nastaveno spojení (tzv. "connection") na databázi, která obsahuje data, se kterými má pracovat. Takovýchto spojení může existovat v některých případech i více (zejména při provozování multiverze). Instalační program ABRA Gen zakládá jedno spojení automaticky v rámci instalace systému, tudíž běžný uživatel, který neprovozuje multiverzi systému, se tím nemusí vůbec zabývat. Pro administraci spojení v ABRA Gen slouží nástroj DBAdmin.
Každé spojení se nachází v nějakém stavu. Stav spojení buď systém nastavuje automaticky, pokud uživatel v rámci systému ABRA provedl uživatelsky takové akce, které vedou na změnu stavu spojení, anebo jej lze nastavit ručně pomocí nástroje DBAdmin. V jakém stavu se dané spojení aktuálně nachází je vidět jednak v nástroji DBAdmin a jednak při přihlašování uživatele do systému v dialogu pro výběr spojení na databázi. (Jak bylo zmíněno v popisu tohoto dialogu, dialog pro výběr spojení není zobrazován jen v případě, že v instalaci existuje jen jedno spojení a to je ve stavu OK, jelikož v takovém případě je jeho zobrazení zbytečné). Ve všech ostatních případech je dialog vyvolán. Uživateli je tak vždy indikováno, že připojením k danému spojení může s ohledem na stav spojení dojít ke změnám stávající databáze, které mohou být i nevratné. Např. při změně stavu spojení v nástroji DBAdmin ze stavu OK na Obnova by došlo ke zlikvidování stávající databáze (byla by nahrazena novou téhož jména, do níž by se obnovila data ze zálohy).
Možné stavy spojení na databázi podle toho, jaké operace uživatel vykonal nebo chce vykonat:
Grafický indikátor tohoto stavu:
Stav "Nová databáze" způsobí, že při příštím spuštění systému ABRA Gen (po výběru daného spojení) dojde k vytváření nové databáze. Tento stav tedy znamená, že spojení je připraveno k vytvoření nové databáze. Podle toho, jestli bylo v definici daného spojení zadáno, zda do něj nahrát i demodata (z vybraného *.DEM souboru) volbou Nahrát demodata či nikoli, příp. pokud se jedná o Přechod mezi systémy ABRA Gen a bylo zadáno, že se mají nahrát data vyexportovaná z jiné databáze systému ABRA Gen (z vybraného *.DBE souboru) volbou Nahrát data ze souboru, bude po přihlášení do takového spojení vytvořena:
- nová prázdná databáze obsahující pouze aktuální výchozí data (tzv. inicializační data(initdata)) dodávaná výrobcem k dané verzi programu
- nebo nová databáze naplněná zvolenými demonstračními daty resp. startdaty (jako je tomu s aktuálností initdat v tomto případě, viz popis inicializačních dat)
- nebo nová databáze naplněná daty vyexportovanými z původní databáze systému ABRA Gen, z něhož se přechází, viz přechod mezi systémy ABRA Gen (migrace)
Databáze bude vytvořena ve stavu odpovídajícímu aktuálně nainstalované verzi, tj. podle souboru CreateDB.DBO. Soubor CreateDB.DBO obsahuje mj. operace, které zajistí naplnění databáze daty v závislosti na kontextu (tj. buď initdaty, nebo initdaty + demodaty či startdaty, nebo v případě migrace nenaplní databázi initdaty, ale daty vyexportovanými z původní databáze).
Variantně lze novou databázi vytvořit i podle *.DBO souborů z jiného (ze zadaného) adresáře, čili díky tomu teoreticky i podle *.DBO z jiné verze, než je verze aktuální instalace. Více viz nástroj DBAdmin, krok Zákaznické úpravy.
V rámci vytváření nové databáze je mj. možno provést její zákaznické úpravy (např. přidání vlastních databázových objektů (tabulky, triggery, ...)). Více viz nástroj DBAdmin, krok Zákaznické úpravy.
Konkrétní kroky, které tedy systém při tvorbě nové databáze provede:
- Vytvoří novou databázi (soubor *.fdb) zadaného jména a na zadaném místě (u Win PC mluvíme o cestě).
- Vytvoří tabulky a jiné databázové objekty v této databázi podle souboru Create*.DBO.
- Vytvoří tabulky a jiné databázové objekty v databázi podle definic uživatele a to, jedná-li se o tvorbu nového spojení prostřednictvím nástroje DBAdmin a byly-li v kroku Zákaznické úpravy zadány i *.DBO soubory se zákaznickými úpravami.
- Provede načtení inicializačních dat resp. demodat/startdat.
- Upraví strukturu právě založených tabulek podle případných definic extra položek uložených v repozitoři. (Pokud by existovaly výrobcem defaultně dodávané extra položky, pak by se nejdříve provedlo načtení první části. inicializačních dat (jen s dodávanými definicemi extra položek), pak by se provedla podle nich úprava struktury tabulek a teprve poté by se provedlo načtení zbývajících inicializačních dat do tabulek s již upravenou strukturou.)
- Vytvoří indexy k tabulkám databáze.
Pokud databáze téhož jména na téže cestě již existuje, tak podle stavu příznaku Smazat databázi před spuštěním bude tato databáze buď nejdříve smazána, nebo bude obnova zastavena.
Tento stav je nastaven:
- automaticky po přidání nové firmy bez obnovy dat v agendě Vytvoření nové firmy - nové spojení
- nebo jej uživatel (typicky administrátor) může nastavit sám v nástroji DBAdmin:
- po přidání nového spojení pomocí volby Přidat nové spojení
- nastavením parametrů existujícího spojení v rámci volby Editovat parametry spojení
Grafický indikátor tohoto stavu:
Stav "Obnova" znamená, že spojení je připraveno k vytvoření nové databáze s naplněním daty ze souboru vybrané zálohy. Po přihlášení do takového spojení bude vytvořena prázdná databáze, do které budou obnovena data uložená v zadaném *.ABF souboru zálohy.
Obnova dat ze zálohy obnoví databázi "tak, jak byla". Je jedno, jestli struktura dat byla taková nebo onaká. (Struktura databáze se vytvoří podle informací uložených v záloze). Tj. výsledek obnovy dat provedené systémem ABRA Gen je podobný, jako bychom databázi obnovili přímo prostředky databázového stroje. Tedy je jedno, v jaké verzi systému ABRA Gen budeme provádět obnovu dat ze zálohy pořízené třeba ve starší verzi. Výsledkem je soubor databáze přesně taková, jaká byla v okamžiku pořízení zálohy dat. (Samozřejmě druhá věc je, jestli taková databáze bude použitelná v aktuální verzi systému. Ve většině případů nikoli, a proto je potřeba následně provést update dat dané databáze, viz dále.)
Soubor zálohy *.ABF doporučujeme obnovovat do stejné verze databázového serveru. V opačném případě mohou být některé obnovy dat komplikované. Může se např. stát, že obnova dat nebude možná do nějaké novější verze databázového serveru, který v dané době ještě nebude systémem ABRA Gen podporován. Proto vždy konzultujte kompatibilitu databázových serverů uvedenou v kap. Databázový server.
V případě obnovy dat, která byla vytvořená na verzi databázového serveru Firebird nižší, než je verze 3, do verze Firebird 3 postupujte dle doporučení Obnova databáze do verze databázového serveru Firebird 3.
Následně se spojení automaticky přepne do stavu Update a provede se datový update, tj. případná úprava těchto obnovených dat tak, aby odpovídala aktuálně nainstalované verzi. Tato operace může trvat i delší dobu v závislosti na velikosti obnovovaných dat. Samozřejmě, že pokud jde o zálohu dat pořízenou v téže verzi systému, do které obnovujeme, žádné úpravy nejsou nutné a nebudou žádné provedeny. Nicméně k přepnutí na stav Update dojde formálně vždy, i když je záloha ze stejné verze, protože v aktuální verzi mohlo dojít k doinstalaci modulu. Aby se databázové objekty pro daný modul v dané databázi vytvořily (v tomto případě podle souboru CreateDB.DBO), je třeba provést datový update.
Opakovaná obnova:
Obnovu dat lze volat i opakovaně, a to buď od začátku nebo s pokračováním v místě, kde byla předchozí obnova přerušena (chyba v datech zálohy/výpadek apod.). Jak takové opakované volání proběhne, pokud je spojení ve stavu Obnova, viz popis příznaku Smazat databázi před spuštěním. Pokud k přerušení zpracování (chyba/výpadek) došlo až po přepnutí do stavu Update, při novém spuštění systému se již volá rovnou update (obnova se již neprovádí, spojení již hlásí stav Update.)
Pokud bude databáze ve stavu nedokončené obnovy anebo se během obnovy vyskytly chyby, nebude možné se do takového spojení přihlásit (ani kdyby se následně ručně nastavil jeho stav na OK nebo Update). Pokud se tedy chyby vyskytnou, databáze se bude muset nejdříve uvést do korektního stavu ručně editací postižených tabulek v databázi. Pokud se takové chyby vyskytnou během obnovy a pokračuje se v obnově, se tak na konci obnovy (ale před začátkem obnovy dalších částí a update) zobrazí informační hlášení a proces se přeruší. Tento okamžik je totiž ten pravý na případné otevření databáze a zahájení ručních oprav. (Po spuštění procesu update by totiž některé update operace mohly "projít" a data by poté mohla být všelijak pozměněna). Po provedení případných ručních oprav opakujte obnovu dat, dokud nebude stav spojení nastaven na OK.
V případě přerušení obnovy a jejím následném zopakování nesmí být stav spojení nastaven na OK nebo Update.
V průběhu obnovy dojede k vytvoření následujících dočasných tabulek:
Název | Popis |
---|---|
nx$restore_state |
V této tabulce je uložena informace zda byla korektně provedena instrumentace (naplnění tabulek). Pokud zde není záznam s hodnotou 1, pak instrumentace neproběhla a provede se znovu. V závislosti na hodnotě ve sloupci State se nastaví interní příznak RestoreState:
Příznak RestoreState se nastavuje:
|
nx$restore_backupH | Informace o souboru zálohy. Kontrolní součet souboru zálohy musí souhlasit s kontrolním součtem zde uvedeným. Jinak řečeno obnova pokračuje s tím souborem obnovy, se kterým začala. |
nx$restore_data | Informace o tom, kolikátý záznam se obnovuje pro danou tabulku. |
nx$restore_dll_A |
Příkazy, které se mají vykonat po naplnění tabulek daty, a informace o tom, zda se vykonaly. Hodnota ve sloupci State může nabývat těchto hodnot:
|
nx$restore_dll_B |
Příkazy, které se mají vykonat před naplněním tabulek daty, a informace o tom, zda se vykonaly. Hodnota ve sloupci State může nabývat těchto hodnot:
|
nx$restore_error | V této tabulce jsou uloženy zaznamenané chyby (i z předchozího spuštění obnovy). |
Grafický indikátor tohoto stavu:
Stav "Update" znamená, že spojení je připraveno k úpravě databáze do stavu odpovídajícího aktuálně nainstalované verzi. Po přihlášení do takového spojení (tj. po výběru takového spojení v rámci spuštění systému ABRA Gen, viz dialog pro výběr spojení na databázi), bude zahájen proces update dat, tj. struktury a data vybraného spojení budou upraveny tak, aby bylo použitelné s aktuálně nainstalovanou verzí (dojde k aplikaci UpdateListu (resp. souboru UpdateDB.DBO) na zvolenou existující databázi). Proces datového update je potřeba i v případě doinstalace modulu, kdy se mají do dané databáze přidat databázové objekty pro nový modul. Aby se v dané databázi vytvořily (v tomto případě podle souboru CreateDB.DBO), je třeba provést právě datový update.
Tato operace může trvat několik minut a je nevratná. Tzn., že po provedení procesu datového update mohou být data jiná, než byla před jeho provedením. Záleží na tom, zda výrobce mezi jednotlivými verzemi systému (tj. mezi verzí, z níž pochází vaše databáze a verzí, kterou máte aktuálně nainstalovanou a v rámci níž právě provádíte update dat) provedl nějaké úpravy ve strukturách dat či nikoli (např. přidal nové tabulky do databáze např. pro nějakou novou agendu, přidal položku do stávající tabulky a nastavil pro ni nějakou výchozí hodnotu apod.). Od počtu těchto změn se i odvíjí, jak dlouho bude tato operace trvat.
Po dokončení procesu datového update se stav spojení automaticky přepne do stavu OK.
Tento stav je nastaven:
- automaticky při aktualizaci programu, viz Aktualizace existující instalace - update
- automaticky po úspěšné obnově dat provedené v rámci stavu Obnova
- nebo jej uživatel (typicky administrátor) může nastavit sám v nástroji DBAdmin:
- nastavením procesu update dat existujícího spojení pomocí volby Update databáze
- nastavením parametrů existujícího spojení v rámci volby Editovat parametry spojení
Do v. 10.01 vč. byly procesy obnovy a datového update spojeny v jedno. Jejich rozdělení v rámci zavedení tzv. inkrementálního update od v. 10.02 umožňuje provedení datového update samostatně. Lze tak nastavit spojení na databázi starší, než je aktuálně instalovaný program (např. databáze obnovena ze zálohy prostředky databázového stroje, databáze z jiné instalace programu apod.) a nastavit na příslušném spojení stav Update.
Po přihlášení do takového spojení (tj. po výběru takového spojení v rámci spuštění systému ABRA Gen) dojde k povýšení databáze do stavu odpovídajícího příslušné verzi, právě aplikací změnového seznamu UpdateDB.DBO. Při tomto způsobu je třeba mít na paměti, že nedojde k přenesení/obnově informací repozitoře (ze zdrojové instalace, z níž databáze pochází).
Schéma provedení update databáze ze starší verze systému nastavením spojení na danou fdb a nastavením stavu Update
Grafický indikátor tohoto stavu:
Stav "OK" znamená, že spojení je v pořádku a připraveno k použití, tedy stav indikuje spojení s provozuschopnou databází. Tzn., že po přihlášení do takového spojení (tj. po výběru takového spojení v rámci spuštění systému ABRA Gen), se s příslušnou databází nic dalšího neprovádí a bude možno se systémem ihned začít pracovat.
Tento stav je nastaven:
- automaticky po úspěšném vytvoření nové databáze v rámci stavu Nová databáze
- automaticky po úspěšném dokončení obnovy dat provedené v rámci stavu Obnova
- automaticky po úspěšném dokončení update dat provedeného v rámci stavu Update
- nebo jej uživatel (typicky administrátor) může nastavit sám v nástroji DBAdmin:
- nastavením parametrů existujícího spojení v rámci volby Editovat parametry spojení
Stav OK odpovídá příznaku "Databáze je vytvořena", jenž byl v nástroji DBAdmin k dispozici ve verzích předcházejících verzi 10.02.
Úprava jednoho z více spojení:
Procesy vytvoření databáze, obnova dat a datový update začínají až po výběru konkrétního spojení. To umožňuje např. obnovovat databázi jednoho spojení a přitom neomezit spuštění programu uživatelům, kteří chtějí pracovat ve spojení jiném.
Pokud např. uživatelé mají spojení "Produkční" a další spojení "Testovací", mohou aktualizovat testovací data z ostrých dat bez odstávky systému Produkčního spojení.