Kontrola integrity
Funkce Kontrola integrity slouží ke kontrole mdb databází Varia na základě jejich šablon. (tzn. neslouží ke kontrole dat na SQL serveru). Během kontroly jsou vzájemně porovnávány struktury šablony a jednotlivých databází, přičemž šablona je řídící. Kontrolovány jsou všechny databáze DDDDXXXX.mdb, ke kterým existuje šablona DDDD0000.mdb (např. databáze Data0001.mdb bude kontrolována podle šablony Data0000.mdb). Všechny nalezené a opravené či neopravené chyby budou zaprotokolovány do souboru Kontrola_integrity_yyyymmdd_hhnn.txt uloženého v adresáři právě používaného datového profilu Varia. yyyy v znázvu souboru označuje rok, mm měsíc, dd den, hh hodinu a nn minutu spuštění kontroly.
Účelem kontroly není kompletní oprava poškozených databází, ale pouze nalezení chyb a zjednodušení jejich opravy. Před použitím této funkce je nutno zazálohovat všechny databáze na bezpečné místo, protože pokus o opravu databází může v některých případech zapříčinit ještě větší poškození než bylo před opravou. Po použití této funkce je vždy nutno prostudovat výše zmíněný soubor logu. V okamžiku, kdy jste si jisti, že data v databázích již nejsou poškozena, je nutno provést vynucenou aktualizaci dat (Během procesu update Varia zaškrtněte volbu "Převést data i u aktuálních verzí")
!!! POZOR !!! kontrola integrity je určena pouze pro zkušené uživatele či správce, kteří vědí, co dělají.
A) Před spuštěním kontroly lze zadat následující volby:
1) Kontrolovat databáze všech firem
Pokud je volba zaškrtnuta, budou kontrolovány všechny databáze DDDDXXXX.mdb, ke kterým existuje šablona. Není-li volba zaškrtnuta, budou kontrolovány pouze databáze aktuální firmy.
2) Nabízet odstranění nebo opravu záznamů
Pokud je volba zaškrtnuta, bude kontrola integrity interaktivně zobrazovat návrh možných řešení nalezených chyb a v případě potvrzení se pokusí o opravu. V logu bude uložena informace o nalezené chybě a její opravě (v případě nepotvrzení navržené opravy bude v logu informace o neprovedení opravy).
Není-li volba zaškrtnuta, nebude nabízeno řešení chyb a v logu bude uložena informace o nalezené chybě a o neprovedení opravy.
Po spuštění kontroly integrity je do protokolu zapsána hlavička v závislosti na volbách vybraných výše. V případě, že je zaškrtnuta volba Kontrolovat databáze všech firem, je zapsán řádek: |
dd.mm.yyyy hh:nn:ss: Kontrola integrity databází všech firem spuštěna uživatelem JMENOUZIVATELE na stanici JMENOSTANICE. |
v opačném případě (kontrola integrity dat pouze aktuální firmy): |
dd.mm.yyyy hh:nn:ss: Kontrola integrity databází firmy NAZEVFIRMY spuštěna uživatelem JMENOUZIVATELE na stanici JMENOSTANICE. |
Pokud je zaškrtnuta volba Nabízet odstranění nebo opravu záznamů, je do protokolu navíc zapsán řádek: |
-- volba 'Nabízet odstranění nebo opravu záznamů' zapnuta. |
Pro každou z právě kontrolovaných databází jsou do logu zapsány řádky: |
dd.mm.yyyy hh:nn:ss: Kontrola integrity databáze JMENODATABAZE spuštěna. |
s tím, že za jednotlivými výše uvedenými body je v případě nalezení chyb zapsán jejich popis a případně i informace o opravě. Pokud proběhne kontrola databáze bez chyb, je dále zapsán řádek: |
dd.mm.yyyy hh:nn:ss: OK: Kontrola integrity dokončena bez chyb. |
V případě nalezení chyby je zapsán řádek: |
dd.mm.yyyy hh:nn:ss: Chyba: Během kontroly integrity byly nalezeny chyby. |
V případě databáze Firmy umístěné na fileserveru se kontroluje pouze existence tabulky MSysCompactError. Po dokončení kontroly integrity (nezávisle na průběhu) je do protokolu zapsán řádek: |
dd.mm.yyyy hh:nn:ss: Kontrola integrity databází dokončena. |
B) Kontrola hledá následující chyby (v daném pořadí):
1) Hodnoty v polích tabulek neodpovídající definici datové struktury (porušení doménové integrity):
a) Hodnoty NULL v polích, která hodnotu NULL nesmí obsahovat. Případná oprava spočívá v aktualizaci pole zadanou hodnotou. Má-li pole definovánu výchozí hodnotu, je k aktualizaci navržena tato. V opačném případě musí hodnotu zadat uživatel.
Je-li na poli v šabloně nastaven jedinečný index a v kontrolované databázi je nalezeno více hodnot NULL, aktualizace se pravděpodobně díky neexistenci zmíněného indexu v kontrolované databázi podaří, ale již se nepodaří převod dat do nových databází.
Vzhledem k tomu, že pravděpodobnost vzniku této situace je minimální, je tuto situaci nutno řešit individuálně.
b) Hodnoty NULL v polích, která jsou součástí primárního klíče. Pro případnou opravu platí totéž, co v bodu B1a).
c) Hodnoty v polích typu Datum, které nejsou v rozmezí 1.1.1753 až 31.12.9999. Tyto hodnoty jsou zakázány při převodu dat na SQL server. Případná oprava spočívá v aktualizaci polí hodnotou zadanou uživatelem. Jako výchozí je uživateli nabídnuto datum 31.12.3000 (kvůli snažšímu dohledání opravených dokladů).
d) Řetězce nulové délky v polích typu text. Případná oprava spočívá v nahrazení těchto hodnot hodnotou NULL nebo řetězcovou hodnotou zadanou uživatelem.
e) Hodnoty, které porušují ověřovací pravidla jednotlivých polí. Případná oprava spočívá v aktualizací polí hodnotou zadanou uživatelem. Zadá-li uživatel hodnotu, která ověřovací pravidlo opět porušuje, bude na to upozorněn a bude požádán o opětovné zadání správné hodnoty.
2) Chybějící tabulky, pole a primární klíče.
a) Chybějící tabulky. Nalezená chyba je pouze zalogována, protože nemá smysl vytvářet prázdnou tabulku. Při pokusu o opravu případné chybějící relace mezi touto a jinou tabulkou v bodu B4 dojde k chybě a vytvoření relace bude přeskočeno.
b) Chybějící pole. Případná oprava spočívá ve vytvoření chybějícího pole a v případě, že nesmí obsahovat hodnotu NULL, i v jeho aktualizaci zadanou hodnotou stejným způsobem jako v bodu B1a). Je-li pole součástí primárního klíče, nebude vytvořeno a chyba bude označena jako fatální. Pole nemůže být vytvořeno kvůli požadavku na jeho jedinečnost a nemožnost jeho dávkové aktualizace tak, aby jedinečnost byla dodržena. Tento případ je nutno řešit ručně. Otázkou je, zda má vytvoření chybějícího pole význam.
c) Chybějící primární klíče. Případná oprava spočívá ve vytvoření primárního klíče na základě šablony. Před vytvořením klíče je provedena kontrola na duplicitní záznamy a v případě, že jsou nějaké duplicity nalezeny, je zobrazen dialog, ve kterém lze duplicitní záznamy odstranit. Nebudou-li odstraněny, nebude klíč vytvořen a kontrolu bude nutno spustit znovu. Pokud chybí jedno z polí nově vytvořeného klíče, nebude klíč vytvořen a do logu bude zapsána zpráva.
3) Záznamy porušující referenční integritu (kontrola dat v relacích).
Jsou prohledávány záznamy, ke kterým neexistuje související záznam v nadřízené tabulce. V případě, že jsou takové záznamy nalezeny, je nabídnuto jejich odstranění. Pokud záznamy neodstraníte, je nutno vyřešit nastalou situaci ručně. Zároveň nebudou v bodu B 4) vytvořeny chybějící relace.
4) Chybějící relace. Případná oprava spočívá ve vytvoření chybějící relace.
Chybí-li jedna z tabulek nebo jedno z polí tvořících relaci, nebude relace vytvořena a nastalá situace bude zalogována. Oprava relací je důležitá vzhledem k tomu, že při importu do nových databází je pořadí importu dat z jednotlivývh tabulek určováno právě na základě relací. Pokud nebude nějaká z relací vytvořena, může dojít při převodu dat do nové databáze k chybě oznamující neexistenci souvisejícícho záznamu v nadřazené tabulce.
5) Existence tabulky MSysCompactError.
Pokud tabulka v databázi existuje, znamená to, že některá z tabulek obsahovala neopravitelné hodnoty, které byly do této tabulky přesunuty. Tato tabulka je při další opravě/kompresi automaticky aplikací MS Access odstraněna. Tato kontrola se provádí i nad databází Firmy.mdb.