Naprawa uszkodzonej bazy Interbase/Firebird W przypadku, gdy podczas pracy programu KS-Apteka Windows pojawiają się błędy jak na rysunku 1, (takie błędy w szczegółach zaczynają się od słów: internal gds software consistency check) oznacza to, że została uszkodzona fizyczna struktura samego pliku z bazą danych (wapteka.gdb lub wapteka.fdb). Rysunek 1 Okno z błędem Tego typy uszkodzenia bazy danych powstają z powodu: awarii dysku lub zasilania niestabilności zasilania (w pobliżu znajduje się zakład przemysłowy, brak UPS lub filtra) złej jakości pamięci RAM wadliwie działającej sieci komputerowej resetowania komputera (za pomocą przycisku na obudowie) i innych Jeżeli w aptece zrobiono archiwum i nie ma zbyt dużo operacji po archiwizacji (w aptece zrobiono archiwum wieczorem, a błędy pojawiły się wcześnie rano), to dobrym rozwiązaniem będzie odtworzenie bazy z archiwum i ręczne wprowadzenie wszystkich brakujących operacji. Uwaga! Baza zarchiwizowana może być uszkodzona podczas robienia archiwum serwer bazy danych może nie zauważyć drobnych błędów w bazie, które jednak skutecznie przeszkodzą w poprawnym odtworzeniu bazy danych. W przypadku, gdy nie ma archiwum (lub archiwum jest uszkodzone) można spróbować naprawić bazę jedną z poniższych metod. 1. Backup/restore Uszkodzoną bazę należy zarchiwizować, wykorzystując do tego moduł Apw43 Archiwer lub program dołączany do serwera bazy danych gbak (dla bazy Firebird domyślnie znajduje się w katalogu C:\Program Files\Firebird\Firebird_1_5\bin). Po wykonaniu tej czynności należy zmienić nazwę bazy roboczej (baza znajduje się na serwerze, domyślnie w katalogu C:\KS\APW\AP), a następnie odtworzyć za pomocą programu IBRest.exe (C:\KS\APW\SERWIS) lub systemowego programu gbak.
Jeżeli baza odtworzy się bez żadnych błędów, to można założyć, że jest naprawiona. W innym przypadku należy skorzystać z kolejnych metod. 2. GFIX Kolejną metodą naprawy uszkodzonej bazy jest zastosowanie programu gfix.exe (C:\Program Files\Firebird\Firebird_1_5\bin). Sposób postępowania jest następujący: 1. Uruchomić wiersz poleceń systemu Windows. 2. Wejść do katalogu z programem gfix.exe 3. Wydać polecenie: gfix C:\KS\APW\AP\wapteka.fdb -mend -user sysdba -pass masterkey gdzie: parametry napisane pogrubioną czcionką należy wpisać zgodnie ze stanem faktucznym (właściwa ścieżka do bazy, użytkownik i hasło) Po zakończeniu tej metody należy wykonać metodę nr 1 Backup/Restore, a w przypadku niepowodzenia przejść do kolejnych metod. 3. IBOConsole Przy pierwszym uruchomieniu programu IBOConsole okno aplikacji wygląda jak na rys. 2. Rysunek 2 Okno programu IBOConsole przy pierwszym uruchomieniu Należy wtedy w pierwszej kolejności zarejestrować serwer bazy danych oraz samą bazę. Aby zarejestrować serwer Firebird'a lub Interbase'a należy z menu Server wybrać funkcję Register.... Pojawi się okno w którym należy wybrać Local server oraz w sekcji Login information wpisać odpowiednio: w polu User name nazwę użytkownika: SYSDBA w polu Password hasło: masterkey
Rysunek 3 Rejestrowanie serwera bazy danych Po zatwierdzeniu okna na liście powinien się pojawić lokalny serwer. Kolejną czynnością do wykonania jest zarejestrowanie samej bazy danych. W tym celu z menu Database wybieramy Register... i wpisujemy dane jak na rysunku 4. Rysunek 4 Rejestrowanie pliku z bazą danych Po zatwierdzeniu klawiszem OK okno programu powinno wyglądać jak na rysunku poniżej.
Rysunek 5 Okno programu po zarejestrowaniu bazy danych Do naprawy bazy danych używa się funkcji walidacji (ang. validation). Aby użyć tej funkcji program musi być odłączony od bazy, inaczej funkcja dostępna w menu Database Maintenance Validation... będzie niedostępna. Aby odłączyć program od bazy należy wywołać funkcję Disconnect z menu Database. Po odłączeniu wywołujemy funkcję z menu Database Maintenance Validation.... Rysunek 6 Opcje walidacji Program wyświetli okno z opcjami walidacji. Przy pierwszej próbie należy przestawić pierwszą oraz trzecią opcję na wartość True jak pokazano na rysunku 6. Po zatwierdzeniu program rozpocznie sprawdzanie bazy danych. Może to potrwać od kilku do kilkunastu minut podczas których program wygląda jakby był zawieszony jest to normalny objaw.
Rysunek 7 Raport ze sprawdzania bazy danych Po sprawdzeniu bazy danych wyświetlony zostanie raport o znalezionych nieprawidłowościach w bazie. W oknie które się pojawi (rysunek 7) należy ponownie wybrać opcje walidacji, czyli w naszym przypadku przestawić obydwie opcje z wartości False na True i nacisnąć przycisk Repair. Program rozpocznie naprawę bazy, która może trwać podobnie jak sprawdzanie bazy danych od kilku do kilkunastu minut. Rysunek 8 Zakończenie procesu walidacji. Po zakończeniu naprawy bazy danych należy zrobić archiwum bazy i następnie odtworzyć ją aby sprawdzić czy baza została naprawiona. 4. IBPack IBPack jest programem do robienia rocznego archiwum bazy danych, możliwe jest jednak wykorzystanie go w celu naprawy uszkodzonej bazy danych. W wyniku uruchomienia programu tworzona jest nowa baza zawierająca przeniesione dane ze starej bazy. Pozycje bazy sprzedaży oraz zakupów są przenoszone tylko od określonej daty. Wpisując jako datę graniczną odpowiednio wczesną datę, np. 1950.01.01 (rysunek 9), do nowej bazy zostaną przekopiowane wszystkie zakupy oraz sprzedaże.
Rysunek 9Okno programu IBPack.exe W pliku IBPack.ini znajdują się opcje programu. W sekcji [Nie kopiuj] znajdują się tabele, które mają być pominięte przez program. Jeśli wiadomo, która tabela jest uszkodzona, a jest to tabela mało ważna, to można tam ją umieścić i program jej nie przekopiuje. Po pomyślnym zakończeniu działania programu IBPack.exe należy upewnić się, że problem został rozwiązany wykonując metodę nr 1 Backup/Restore, a w przypadku niepowodzenia przejść do kolejnych metod. 5. DBCopy Metoda ta polega na przeniesieniu wszystkich tabel do nowej bazy. Aby przenieść dane należy: 1. Zmienić nazwę pliku wapteka.fdb na inną np wap_old.fdb. 2. W miejsce pliku wapteka.fdb wgrać nową bazę, znajdującą się w pliku wapteka.zip. 3. W Panel sterowania -> BDE Administrator odszukać alias KS-APW i zapisać go (Object Save As) pod nową nazwą np. KS-APW_OLD 4. W aliasie KS-APW_OLD zmienić ścieżkę SERVER NAME aby odwoływała się do pliku wap_old.fdb. 5. Uruchomić program DBCopy 6. W grupie Dane źródłowe w polu Baza danych należy wybrać alias KS-APW_OLD. Baza docelowa powinna wskazywać KS-APW. 7. Nacisnąć Connect. W tym czasie program sprawdzi odydwie bazy i pojawi się lista z zaznaczonymi tabelami do skopiowania. 8. Nacisnąć Copy All. Nastąpi kopiowanie danych do bazy docelowej. Może to potrwać około 0.5-2 godzin.
9. Po zakończeniu kopiowania należy z modułu APW42-Serwis uruchomić funkcję Narzędzia -> Ustawianie sekwencji W przypadku błędów podczas działania programu należy operację powtórzyć, prz czym należy odznaczyć na liście tabelę powodującą błąd. Jeśli wśród zaznaczonych tabel są tylko mało istotne tabele (np. słownikowe), to można uznać operację za zakończoną sukcesem. Po zakończeniu tej metody należy wykonać metodę nr 1 Backup/Restore.