Blokowanie bazy FB

0

Witam,

Mam pewien problem. Postaram sie go omowic po krotce. Pisze program ktory dziala w roznych lokalizacjach, kazda lokalizacja ma 1 baze danych i kilka podlaczonych klientow. Chodzi mi teraz o to ze chcialbym zrobic programik ktory sobie chodzi w tle i pobiera aktualizacje. Problemu nie mam jezeli jest to tylko aktualizacja samego programu, wtedy jest go latwo podmienic. Chodzi mi o aktualizacja bazy danych, moze sia zdazyc ze bede potrzebowal zrobic jakas zmiane i robiac zmiany musze byc pewny ze nikt nie pracuje na bazie (i to tez umiem sprawdzic) ale nie chcialbym aby nikt sie nie polaczyl do bazy podczas gdy ja bede robil jej np. konwersje).

Zastanawialem sie sie nad takimi rozwiazaniami w obu przypadkach przy aktualizacji wyskoczy komunikat ze nalezy dokonac aktualizacji programu i wtedy uzytkownik wybiera ze chce aktualizowac.

  1. Blokuje wszystkie tabele w bazie. Problem zostaje jeszcze z procedurami itp, ale zakladam ze ich nikt nie bedzie modyfikowal poniewaz nikt nie ma do nich dostepu. Po blokadzie moge wykonac wszystkie czynnosci na bazie, potem zwolnic blokade

  2. To rozwiazanie przynajmniej wedlug mnie wydaje sie lepsze. Tworze specjalnego uzytkownika (UPDATER) ktory bedzie podlaczal sie do bazy. Moj program sprawdzi czy wszyscy sie wylogowali (powinien zostac tylko on), wtedy bedzie dokonywal aktualizacji. Natomiast w programie kilenta dam warunek ze jezeli jest podlaczony uzytkownik (UPDATER) to wtedy nastepuje rozlaczenie z baza i nie mozna sie zalogowac i wtedy bede mogl przeprowadzic aktualizacje.

Moze ktos ma doswiadczenie w tych sprawach i powie mi czy dobrze mysle i moge zastosowac ktores rozwiazanie, czy to moze tragedia i trzeba to zobic inaczej.

Zapomnialem dodac ze baza to FB 1.5

PS Problem z wykrywaniem zgodnosci wersji zostawie na inny raz :)

0

Cytacik z http://gskoczylas.rekord.pl/ dotyczy fb 2.0:

"W niektórych sytuacjach potrzebne jest zagwarantowanie, że do serwera nie jest podłączony żaden inny użytkownik. Jedną z takich sytuacji jest potrzeba weryfikacji bazy danych (ang. database validation). Często również podczas aktualizowania struktur bazy danych bezpiecznie jest zablokować możliwość pracy użytkownikom do czasu jej zakończenia.

Dotychczas serwer Firebird oferował funkcję przełączenia bazy w tryb pracy jednostanowiskowej (ang. database shutdown). Po przełączeniu w ten tryb z bazą danych mógł się połączyć jedynie administrator serwera (użytkownik SYSDBA). Nie był to jednak w pełni tryb jednostanowiskowy, ponieważ w tym trybie mogło z bazą jednocześnie być połączonych dowolnie wielu użytkowników SYSDBA. W przypadku dużej instytucji nie dawało to gwarancji, że z bazą danych jest rzeczywiście cały czas połączony tylko jeden użytkownik.

W serwerze Firebird 2.0 oprócz dotychczasowych trybów wprowadzono nowy tryb pracy jednostanowiskowej. W tym nowym trybie serwer gwarantuje, że z bazą danych może się połączyć tylko jeden użytkownik SYSDBA."

Założyć dwóch użytkowników na bazie jeden dla operatorów drugi na tryb serwisowy.
Ja bym jeszcze pomyślał koniecznie o kopii przed jakimikolwiek modyfikacjami

1 użytkowników online, w tym zalogowanych: 0, gości: 1