Re: Passwort bei Jet Datenbanken
From: Peter Götz (gssg_nospam_at_t-online.de)
Date: 04/09/04
- Next message: Peter Götz: "Re: Falsches Datumsformat beim exporteiern mit GetRows"
- Previous message: Andre Schaub: "Re: Passwort bei Jet Datenbanken"
- In reply to: Andre Schaub: "Re: Passwort bei Jet Datenbanken"
- Next in thread: Peter Götz: "Re: Passwort bei Jet Datenbanken"
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 9 Apr 2004 16:13:06 +0200
Hallo Andre,
> Eigentlich sollte man doch meinen, dass MS in .NET bereits Methoden zur
> Lösung von Mehrbenutzerproblemen eingebaut haben sollte. Schließlich ist
> die Arbeitsweise von ADO.NET ja darauf ausgelegt, Daten offline im
> Dataset zu bearbeiten und nur kurzzeitig eine Verbindung zur DB
> herzustellen.
>
> Oder überlässt MS es auch hier dem Programmierer, bzw. bei automatischer
> Indexvergabe dem DB System?
Ich denke Du verwechselst da einige grundlegende Dinge.
Eine Jet-DB (Access.mdb) ist eine simple Datei wie jede andere Datei auch.
Sie kann also von sich aus weder einen Mehrbenutzerkonflikt erkennen, noch
irgendwelche Nachrichten an irgendeinen Client senden.
Dabei spielt es keine Rolle, ob man mit ADO oder mit ADO.net auf die DB
zugreift. Bei einer Jet-Datenbank (*.mdb) musst Du Dich (bzw. Dein
Programmcode) immer selbst um das Erkennen und Auflösen von
Mehrbenutzerkonflikten kümmern, da eine Datei (*.mdb) eben selbst keine
Aktivitäten entfalten kann und somit auch nicht Datenanforderungen
verschiedener Clients irgendwo zwischenspeichern und dann der Reihe nach
abarbeiten kann.
Beim SQL-Server oder bei ORACLE und ähnlichen DB-Systemen gibt es nicht nur
passive Dateien in denen die DB-Daten gespeichert sind, sondern eben ein
aktives Programm, welches Anforderungen von verschiedenen Clients, Daten aus
diesen Dateien zu lesen oder in diese Dateien zu schreiben, entgegen nimmt
und dann die dafür erforderlichen Operationen ausführt und die gewünschten
Daten an den Client zurückgibt, bzw. Erfolg oder Misserfolg einer
Schreiboperation an den Client meldet.
Im Gegensatz zu den Daten in einer *.mdb auf die verschiedene Clients über
die Jet-Engine oder auch ein anderes Programm direkt zugreifen können,
verhindern aktive DB-Systeme wie der SQL-Server solche direkten Zugriffe.
Niemand ausser dem Programm SQL-Server selbst hat Zugriff auf die Dateien,
in denen die Daten der einzelnen Tabellen gespeichert sind. Wollen zwei oder
mehr Clients am selben Datensatz etwas ändern, dann reiht der SQL-Server
diese Änderungswünsche in eine Warteschlange ein und arbeitet diese
Änderungswünsche schön der Reihe nach ab. Dies führt zwangsläufig dazu, dass
es gar nicht erst zu gleichzeitigen Zugriffsversuchen mehrere Clients auf
die selben Daten kommen kann. Die Clients können dem SQL-Server nur sagen,
ändere den Datensatz sowieso von X nach Y. Ändern tut dann der SQL-Server
selbst. Ist dann irgendwann die Änderung erfolgreich verlaufen meldet der
SQL-Server dies an den Client zurück.
Bei einer Jet-DB (*.mdb) gibt es erst mal kein zentrales Programm, welches
den Zugriff auf die in der *.mdb gespeicherten Daten anderen Programmen
verwehrt. Jeder mit entsprechender Berechtigung kann direkt auf diese Daten
direkt zugreifen. Das heisst eben auch dass jeder, der auf die *.mdb
zugreift selbst dafür verantwortlich ist, festzustellen, ob nicht gerade ein
anderer Client am selben Datensatz was ändert. Dies bekommt er in Form einer
Fehlermeldung mitgeteilt. Der Client, genauer das auf dem Client laufende
Programm, muss selbst diese Fehlermeldung auswerten und dann entscheiden,
was sinnvollerweise zu tun ist. Das ist bei ADO.net genauso wie eben auch
beim bisherigen ADO.
Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tips u. Beispielprogrammen)
- Next message: Peter Götz: "Re: Falsches Datumsformat beim exporteiern mit GetRows"
- Previous message: Andre Schaub: "Re: Passwort bei Jet Datenbanken"
- In reply to: Andre Schaub: "Re: Passwort bei Jet Datenbanken"
- Next in thread: Peter Götz: "Re: Passwort bei Jet Datenbanken"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|