Autor Beitrag
Nico B.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Do 05.08.10 10:21 
Hallo Leute,

ich versuche schon seit Wochen einen Multiuser-Zugriff auf eine Access97-Datenbank mit ADO-Komponenten hin zu bekommen. Ich will aus der Datenbank nur lesen. Es gibt aber noch ein anderes Programm (nicht von mir), das ebenfalls auf die Datenbank zugreift und auch in die Datenbank schreibt.
Ich schaffe es einfach nicht den lesenden Zugriff so einzurichten, dass er von jedem PC aus möglich ist.

Hier mal alle Infos zu meiner ADOConnection:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Eigenschaften:
Attributes        []
CommandTimeout    30
Connected         false
ConnectionString  //kommt noch
ConnectionTimeout 15
ConnectOptions    coConnectUnspecified
CursorLocation    clUseServer
DefaultDatabase
IsolationLevel    ilCursorStability
KeepConnection    true
LoginPromt        false
Mode              cmUnknown
Name              ADOC_CNC
Provider          Microsoft.Jet.OLEDB.4.0
Tag               0

Nun noch der ConnectionString:
ausblenden Delphi-Quelltext
1:
Provider=Mircosoft.Jet.OLEDB.4.0;User=xyz;Data Source=\\xyz.xyz.xyz.xyz\Ordner\KR_HOST.mdb;Mode=Share Deny None;Persist Security Info=false;Jet OLEDB:System database=\\xyz.xyz.xyz.xyz\Ordner\system.mdw;Jet OLEDB:Engine Type=4					

Ich kann die Verbindung auf meinem Programmier-PC erfolgreich testen. Sowohl über den Verbindungsassistenten von Delphi, als auch mit meinem Programm selbst. Auf meinem Programmier-PC (Windows XP) funktioniert die Verbindung ebenfalls. Auch auf einem Server (Windows Server 2003) klappt die Verbindung.

Nun soll das fertige Programm jedoch auf zwei anderen Rechnern laufen. Einer mit Windows XP und einer mit Windows 2000.
Auf beiden PC's erhalte ich keine Verbindung. Stattdessen bekomme ich immer wieder auf beiden PC's eine Fehlermeldung.

Ich bin mir jetzt nicht sicher, wie die Meldung lautet.
Ich reiche sie aber gleich noch nach.

Kann mir irgendjemand sagen, was ich falsch mache?
Nico B. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Do 05.08.10 10:43 
Hier die Fehlermeldung:

"Das Mircosoft Jet-Datenbankmodul kann die Datei '' nicht öffnen. Sie ist bereits von einem anderen Benutzer exklusiv geöffnet, oder sie benötigen eine Berechtigung, um die Daten lesen zu können."

Seltsamerweise nennt er jetzt nicht mal mehr die Datei in der Fehlermeldung.
Früher stand dort noch statt des '' ganz klar '\\xyz.xyz.xyz.xyz\Ordner\KR_HOST.mdb'.
Keine Ahnung woran das nun liegt.
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Do 05.08.10 10:58 
Ich nehme mal stark an, dass das an dem anderen Programm liegt, von dem du geschrieben hast. Kannst du denn die Datenbank z.B. mit Access von einem dieser beiden Rechner öffnen? Das würde dann zeigen, dass es nicht an deinem Programm liegt, sondern daran, dass das andere Programm die DB exklusiv öffnet.

Außerdem natürlich die Dateiberechtigungen prüfen!
Nico B. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Do 05.08.10 13:01 
Hallöchen,

also das habe ich natürlich auch schon überlegt.
Nur verstehe ich nicht, warum es dann auf meinem Programmier-PC und meinem Server läuft...

Es sieht mir fast so aus, als gäbe es irgendeinen Unterschied in den Einstellungen der Rechner. Ich habe aber keine Ahnung, was das sein könnte.
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Do 05.08.10 14:16 
Läuft denn auf deinem PC/Server auch das Fremdprogramm?
Hast du die Sicherheitseinstellungen für die Access-DB verglichen?

user profile iconiKilledKenny hat folgendes geschrieben Zum zitierten Posting springen:
Kannst du denn die Datenbank z.B. mit Access von einem dieser beiden Rechner öffnen?

Was hat diese Prüfung ergeben?
Nico B. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Do 05.08.10 14:35 
Ich habe auf den anderen PC´s kein Access. Und kann daher die Datenbank nicht öffnen.
Leider komme ich heute nicht mehr an die PC's ran, auf denen mein Programm nicht läuft.
Morgen Vormittag werde ich aber folgendes Probieren:

1. Läuft mein Programm auf dem Rechner auf dem auch die Access-DB gespeichert ist.
Allerdings könnte es da Probleme geben. Der Rechner läuft mit Windows 2000. Und da müsste ich wahrscheinlich erst MDAC und Mircosoft Jet 4.0 installieren. Das würde ich aber nur ungern tun, da dieser Rechner teil eines Produktionssystems ist, und ich mir nicht sicher bin, ob das zu Problemen führen könnte.

2. Ich werde mein Programm noch einmal auf den anderen beiden Rechern testen. Vorher pinge ich den Rechner mit der Datenbank noch einmal an. Falls das Programm dann nicht läuft (was ich erwarte), werde ich ein Netzlaufwerk einrichten, das auf den Ordner mit der Access-DB zugreift. Anschließend probiere ich es noch einmal. Vielleicht hängt es ja irgendwie damit zusammen. Auf meinem Programmier-PC und meinem Server habe ich jedenfalls Netzlaufwerke auf diesen Ordner eingerichtet. Auch wenn die Netzlaufwerke nicht verbunden sein müssen, damit mein Programm auf die Datenbank zugreifen kann.

Versuch macht klug! Hoffe ich.

Wegen der Sicherheitseinstellungen der Access-DB... Was genau soll ich da vergleichen?
Ich greife ja von allen PC's immer auf die selbe Datenbank auf dem selben Rechner zu.
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Do 05.08.10 15:34 
Also ich muss doch nochmal nachfragen: Hast du bei der Entwicklung in derselben Umgebung (Netzwerk, Access-DB, etc.) gearbeitet, in der dein Programm nun auf den anderen 2 Rechnern nicht läuft?

Wenn du über \\Server\Freigabe\Access.mdb auf die DB zugreifen willst, impliziert das eine Freigabe unter ebendiesem Namen auf dem "Access-Server", das sind aber Basics! Das kannst du mit dem Windows-Explorer prüfen, ob du diese Freigabe erreichen kannst. Einfach "\\Server\Freigabe" in der Adresszeile eingeben, dann müsstest du die Access-DB sehen können.

Mit Sicherheitseinstellungen meine ich die Zugriffsrechte im Dateisystem für die Access-DB. Du greifts zwar auf dieselbe DB zu aber mit unterschiedlichen Benutzern.

Was hat ein Ping mit dem Laufen eines Programms zu tun? Ein erfolgreicher Ping stellt nur sicher, dass du den gepingten Rechner über das Netzwerk erreichen kannst.
Nico B. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Fr 06.08.10 09:55 
Guten Morgen,

also ich habe jetzt probiert.
Ich habe mit meinen beiden Problem-PC's eine Verbindung hinbekommen.
Allerdings musste ich dazu, das Laufwerk als Netzlaufwerk verbinden.

Gibt es denn keine Möglichkeit das Netzlaufwerk zu umgehen?
Ich könnte mir vorstellen, das Problem ist, dass ich mich unter einem bestimmten Benutzernamen anmelden muss.
Kann ich den Benutzernamen für den Zugriff auf das freigegebene Verzeichnis (mit der Access-DB) nicht gleich irgendwie in den ConnectionString packen?


Nun noch zu deiner Frage:
Ja, ich habe bei der Entwicklung meines Programms im selben Netzwerk gearbeitet, in dem es auf den anderen beiden Rechnern Probleme gibt.
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Fr 06.08.10 10:30 
Wenn das Problem im Bereich Freigabe/Netzlaufwerk zu suchen ist, dann muss dein "Server" mit der Access-DB eben das Verzeichnis, in dem die DB liegt, freigeben. Dann sollte es auch ohne Netzlaufwerk klappen. Für diese Freigabe und die darin enthaltenen Dateien (Access-DB) sind dann die Berechtigungen so zu setzen, dass du auf diese von deinem Netzwerk aus zugreifen kannst. Wenn das funktioniert, brauchst du kein Netzlaufwerk mehr, sondern du gibst dann wie in deinem ersten Post den Pfad zur DB in deinem ConnectionString mit einem UNC-Pfad (\\Server\Freigabe\db.mdb) an.
Nico B. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Fr 06.08.10 13:39 
So, ich habe mein Problem gelöst.
Ich habe den Ordner in dem die Access-DB liegt nun auch für die Gast-Nutzer freigegeben.
Damit klappt jetzt mein Zugriff auf die Datenbank von allen Rechnern problemlos. Auch ohne das ich den Ordner auf jedem Rechner als Netzlaufwerk einrichte.

Vielen Dank Alexander für deine Hilfe.
Eigentlich war's ja gar nicht so schwer.
Ich hatte mich wohl einfach ganz schön verfahren.

Also: Thema gelöst. :D