Am 08.02.10 22:22, schrieb Thomas Tempelmann:

Ich vermute, es würde reichen, wenn du dafür sorgst, daß wenn ein
programm in die DB schreiben will, alle anderen ihren DB-Zugrif so
lange schließen. Dazu könntest du eine Datei auf einem
Netzwerk-Dateiserver haben, der 1. mitzählt, wie viele PCs grad die DB
geöffnet haben, und dann über einen anderen Wert darin alle mitteilen,
daß sie die DB schließen sollen. Dazu müssen natürlich alle Apps diese
Datei konstant wiederholt abfragen.

So eine Locking-Datei wird aber spätestens dann zum Problem, wenn diese unerwartet nicht mehr gelöscht/aktualisiert wird und daher alle anderen PCs keinen Zugriff mehr haben :-)

Rein theoretisch müsste man das ganze so bauen, das Schreibzugriffe so kurz wie möglich dauern, damit das File nicht mehr gelocked ist. Oder man baut sich eine zweite Applikation auf dem Server, welche über TCP/IP per Schnittstelle (z.B. XML) die SQL-Kommandos entgegennimmt und mit dem Resultat antwortet - dann hat nur das Server-Programm alleinigen Zugriff auf das Datenbankfile und kann konkurrierende Schreibzugriffe intern regeln.

Oder du installiert MySQL oder PostgreSQL auf einem Server und benutzt
dann eines der einschlägigen SQL-Datenbank-Plugins dafür. Das ist dann
auch kostenlos.

Das wäre mit steigender Anzahl an Benutzern natürlich die beste Lösung, wobei PostgreSQL und MySQL dann eben den Nachteil haben, das die anfängliche Installation / Konfiguration komplizierter wäre.

--
Michael Kagerbauer
http://rbcoder.de

Antwort per Email an