Re: Passwort bei Jet Datenbanken

From: Peter Götz (gssg_nospam_at_t-online.de)
Date: 04/09/04


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)



Relevant Pages

  • Re: Union-Abfragen, Geschwindigkeit beim Speichern, Access oder SQL-Server
    ... Bei Access kannst Du ähnlich wie beim SQL-Server ... > aber nicht auf dem Server, sondern eben in jedem einzelnen Client. ... > diesem Programm. ...
    (microsoft.public.de.vb.datenbank)
  • Re: Verbindungen mit UNC-Pfad auf Windows-Server
    ... Das sollte mit einem aktuellen Client eigentlich nicht mehr passieren, ... Das Programm braucht zum Starten etwa 20 Minuten. ... Bei gleicher Konfiguration des Arbeitsplatzes - jedoch ohne Netware-Client ... also ob der Netware Client ein Problem mit dem Zugriff ...
    (de.comp.sys.novell)
  • =?iso-8859-1?Q?Re:_=FCber_email_SQL_update_code_ausf=FChren_m=F6glich=3F?=
    ... Was macht/kann dieser Client? ... Angebotsausgabe in Word eigentlich bisher alles was für diesen Prozess ... Wie soll der Teamleiter denn entscheiden, ohne Programm? ... Du erhöhst Deine Chance, dass Deine Frage überhaupt gelesen und qualifiziert ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • LAN, Server, Client, Programminstallation, zentrale Verwaltung
    ... Und zu besser, schöner, toller hab ich mir vor ner Weile erzählen ... dieses Programm beim nächsten Login auf einem beliebigen Client dieses ... Programm zur Verfügung gestellt wird. ... (Software-Profil? ...
    (microsoft.public.de.german.windows.server.general)
  • LAN, Server, Client, Programminstallation, zentrale Verwaltung
    ... Und zu besser, schöner, toller hab ich mir vor ner Weile erzählen ... dieses Programm beim nächsten Login auf einem beliebigen Client dieses ... Programm zur Verfügung gestellt wird. ... (Software-Profil? ...
    (microsoft.public.windows.server.sbs)