Gleichzeitiger Zugriff auf eine Access-DB

devencer

Grünschnabel
Hi

Ich arbeite an einem kleinen Programm mit Access Backend, das von ca. 20 Usern benutzt werden soll. Um zu testen, wie Access reagiert, wenn mehrere User an derselben DB arbeiten, habe ich mir eine Test-Routine geschrieben, die 1000 INSERT-Einträge in die DB schreibt. Wenn ich diese Routine zwei mal ausführe (DB auf Netzlaufwerk), erhalte ich sporadisch folgende Fehlermeldung: Datenbank '' konnte nicht geöffnet werden. Entweder wird die Datenbank nicht von Ihrer Anwendung erkannt, oder die Datei ist beschädigt. Was hat das zu bedeuten?

Wenn ich den Test lokal ausführe, erhalte ich weniger Fehlermeldungen.

Wenn ich die Test-Routine von zwei verschiedenen Rechnern ausführe erhalte ich nun die folgenden Meldungen:
Datenträger- oder Netzwerkfehler
oder
Operation muss eine aktualisierbare Abfrage verwenden

Ist Access überfordert? Oder muss ich die SQL-Commands irgendwie absichern, à la SyncLock wie beim Threading?

Ich bin froh um jeden Tipp :)

Gruss
devencer
 
Zuletzt bearbeitet:
Hi,

Dir ist aber bekannt, das Access eine Desktop - Datenbank ist? Die ist für ein derartigen Zugriff über ein Netzwerk nicht entwickelt worden. Warum nimmst Du nicht eine SQL - Datenbank mit SQL - Server Express? Den SQL - Server Express gibt es bei Microsoft kostenlos und für ca. 20 User reicht das allemal.
 
Hallo Zusammen,

grundsätzlich geht das bis zu einer gewissen Anzahl von Benutzern
schon. Auch mit Access.
Der Haken ist aber der das du Programmintern gleichzeitige Zugriffe
selber abfangen musst (Try Catch) (da eine Access DB nur ein File ist) und den fehlgeschlagenen Versuch z.B. in einer
Schleife wiederholen musst (mit Fehlerauswertung). Das ist aber sehr aufwendig
und die DB kann trotzdem schnell kaputt gehen.
Deshalb rate ich auch ganz klar davon ab.
Die Access mdb muss auch ständig komprimiert und repariert werden, weil sie
sonst immer größer wird (auch beim Löschen von Datensätzen).

Nimm ein echtes DBMS. Es gibt genug kostenlose. MySQL, SQL Server Express
etc. Da kümmert sich der Datenbankserver / Dienst um die Zugriffe.
Und seit SQL Server Express 2005 (aktuell 2008) gibt es auch keine Einschränkung
mehr bezüglich der Zugriffe (bei MSDE waren die mal auf 5 begrenzt).
Lediglich max 1GB Arbeistspeicher für den Server und eine Datenbankgröße
von 2 GB sind die Einschränkungen vom SQL Server Express gegenüber dem
großen SQL Server. (OK, die Zusatztools sind beim großen noch Umfangreicher...)
Beide (MySQL oder SQL Server Express) sind Ruck Zuck installiert.

Jens
 
Zurück