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

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Do 11.03.10 12:38 
Hallo Leute,

ich versuche von PC S auf eine Access-DB auf PC A zuzugreifen. Dazu habe ich einen Dienst mit ADO-Komponenten geschrieben.
Ich bekomme den Zugriff aber einfach nicht hin. Ständig erhalte ich die Meldung:
"Das Microsoft JET-Datenbankmodul kann die Datei '\\123.123.123.123\Ordner.Datenbank.mdb' 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."

Es handelt sich um eine alte Access-DB an der ich auch nichts ändern kann.

Seltsamerweise hat der Zugriff funktioniert, als ich noch mit einem normalen Programm gearbeitet habe und nicht mit einem Dienst. Auch als Dienst hat der zugriff schon funktioniert, allerdings nur unter einem anderen Benutzernamen, den ich jetzt nicht mehr verwenden kann.

Nach langem Suchen habe ich nun die Idee, dass es eventuell an dem ConnectMode der ADOConnection liegt.
Ich habe daraufhin schon cmShareDenyNone, cmShareDenyWrite und cmRead ausprobiert. Jedoch ohne Erfolg.

Kann mir jemand helfen?
Vielleicht kann mir jemand auch mal verständlicher diesen ConnectMode erklären, als das die Delphi-Hilfe macht.

Danke schon mal.
Andreas Schilling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 1

WIN XP, WIN 7
Delphi 5 Ent, Delphi 2007 Pro, XE4
BeitragVerfasst: Do 11.03.10 12:59 
Zugriff über ODBC ? --> dann ODBC-Verbindung als "System-DNS" anlegen
Ausführen des Dienst als "lokales System" ? --> dann als Windowsuser welcher die Berechtigung hat ausführen lassen
Nico B. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Do 11.03.10 13:31 
Nein, ich greife nicht per ODBC auf die Access-DB zu.
Mein ConnectionString sieht wie folgt aus:
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\123.123.123.123\Ordner\Datenbank.mdb;Persist Security Info=False'

Mittlerweile habe ich auch die Modi cmShareDenyRead und cmWrite ausprobiert.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Hallo Leute,

also ich habe jetzt alle 8 Modi ausprobiert.
Mit keiner funktioniert es.

Ich versteh es einfach nicht.

Noch mal ganz langsam.
Mein Dienst läuft auf PC S. angemeldet unter einem Benutzernamen P.
Zugreifen soll er auf eine Access-DB auf dem PC A mit dem Benutzer K.
Als ConnectMode habe ich alle Varianten probiert auch cmShareDenyNone.

In dieser Konstellation funktioniert es (wie gesagt) leider nicht.

Vorher hat es schon einmal funktioniert. Als ConnectMode hatte ich cmShareDenyNone.
Angemeldet war der Dienst damals unter dem Administrator Benutzerkonto.

Der einzige Unterschied zwischen geht und geht nicht ist also der Benutzer.
Der Benutzer P hat auch Administratorrechte.

Auch wenn ich dem Dienst keinen bestimmten Benutzer zuordne und ihn unter Lokales System anmelde, funktioniert es nicht.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Hallo Leute,

ich bin immer noch ziemlich ratlos.
Hat denn keiner eine Idee?

@Andreas Schilling:
Ich kann es auch gern mal über ODBC versuchen, weiß aber nicht wie ich das einrichten muss.
Vielleicht kannst du mir das noch mal etwas ausführlicher erklären.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Hallo Leute,

ich probiere immer noch den Zugriff auf die Datenbank zum Laufen zu bringen.
Ich habe gerade folgende Beobachtung gemacht:

Ich habe in meinen Dienst eine if FileExists Abfrage eingebaut, bei der ich prüfe, ob mein Dienst die Access.mdb eigentlich sieht.

Und zu meinem großen Erstaunen, sieht mein Dienst die Datei zwar, wenn er unter dem Administrator-Konto läuft, aber nicht wenn er unter meinem richtigen Benutzernamen läuft. Und das obwohl beide Nutzer zu Administratorengruppe gehören.

Welche Rechte fehlen meinem Benutzer und wie kann ich sie ihm übertragen?
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 12.03.10 13:00 
Hi, sieht er so aus das du keine Rechte für die DB hast.
Zitat:
Sie haben im entsprechenden Verzeichnis keine Rechte zum anlegen neuer Dateien. Dies ist notwendig, damit Access die zugehörige .ldb Datei erstellen kann. Überprüfen Sie dies, indem Sie versuchen, eine Textdatei mit der Endung .ldb im Verzeichnis der Access-mdb zu erstellen.


Der echte Admin muss Dir also die rechte für diese DB geben!
Zitat:
Die Windoes-Anmeldung hat erst mal gar nichts mit dem Access-Login zu tun.
Alle Rechte-Einstellungen für die Access-DB werden in Access selber definiert.
Dazu verwendet Access die "System.mdw" Arbeitsgruppendatei, wenn keine andere angegeben wurde (--> "Sicherheit.mdw"). Wenn eine neue Arb.Gr. Datei erstllt wurde, muß Access auch mit Übergabe dieser Datei und der eigentlichen MDB-Datei gestartet werden (über einen Link oder einen Batch-Datei)

Access benutzt IMMER den User "Admin", auch wenn das Sicherheitssystem nicht aktiviert ist, und auch die System.mdw für jede Access-Anwendung/MDB-Datei.


Ich hoffe bin richtig! :gruebel:

Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Nico B. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Mo 15.03.10 09:32 
Hallo ALF,

leider kann mir der echte Admin keine Rechte für die Datenbank geben.
Die Datenbank gehört zu einem Programm, dass vor Jahren von einer anderen Firma geschrieben wurde.
Ich versuche jetzt nur die DB auszulesen.

Ich denke auch langsam, dass es eher an irgendwelchen Netzwerkrechten meines Nutzers paz liegt.
Denn mit FileExists sehe ich nicht einmal die mdb-Datei, wenn ich mit paz arbeite. Mit dem echten Administrator sehe ich sie jedoch.
Nico B. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Mo 22.03.10 15:52 
Hallo Leute,

ich habe mein Problem gelöst.
Ich habe weder mein Programm noch die Rechte der Access-Datenbank ändern müssen.
Stattdessen habe ich einfach meinen Server-Nutzer auch auf dem Access-Rechner eingerichtet.
Anschließend lief alles problemlos.

Vielen Dank für eure Unterstützung.