Anzeige:
Ergebnis 1 bis 12 von 12

Thema: kein shared zugriff auf paradox-db möglich!

  1. #1
    Registrierter Benutzer
    Registriert seit
    Sep 2001
    Beiträge
    64

    Question kein shared zugriff auf paradox-db möglich!

    Hallo Leute,
    ich habe mit delphi ein datenbankprogramm geschrieben, mit dem mehrere user von verschiedenen rechnern auf eine gemeinsame paradox-datenbank zugreifen sollen, die sich auf einem netzlaufwerk befindet. Ist die datei auf einem zum lesen und schreiben freigegebenen windows-laufwerk, funktioniert der gemeinsame zugriff, ist sie auf einem novell-server, funktioniert es auch, nur auf einem linux (samba)- server kann nur jeweils ein user gleichzeitig die datei öffnen. Das verzeichnis, in dem sich die datenbankdatei befindet hat die linux-rechte 0777, jede datei wird in diesem verzeichnis auch mit diesen rechten erstellt und ich habe das verzeichnis unter samba sogar mit "force user xxx" freigegeben, so dass jeder, der in dieses verzeichnis geht, die selbe benutzerkennung hat. Trotzdem funktioniert es nicht! Was macht linux bzw. samba noch anders als novell oder windows? Ich bin mit meinem latein am ende und hoffe auf hilfe!!!

    Tschüss

    Jagusch

  2. #2
    Registrierter Benutzer
    Registriert seit
    May 2001
    Ort
    Emden
    Beiträge
    107
    Moinsen!

    Hmm, sehr eigenartig.
    Wird der Zugriff auf eine Paradox-DB nicht über die BDE geregelt?
    Es wundert mich etwas, dass es überhaupt funktioniert.
    Nun gut, wie dem auch sei.
    Wie lautet denn die Fehlermeldung, wenn ein zweiter Nutzer auf die DB zugreift? Eventuell kann man daraus ja was erkennen.

    Grüße

    Torsten
    104 Tasten Maus.
    Tastatur mit Scrollrad

  3. #3
    Registrierter Benutzer
    Registriert seit
    Sep 2001
    Beiträge
    64
    Hallo,

    die fehlermeldung lautet einfach "Tabelle kann nicht geöffnet werden", was ich ebenfalls sehr eigenartig finde. Die BDE regelt den shared-zugriff normalerweise über zwei dateien, "paradox.lck" und "pdoxusrs.lck", die in das verzeichnis geschrieben werden, in dem auch die datenbankdatei steckt. Deshalb müssen auf dieses verzeichnis schreibrechte existieren. Unter Linux werden diese dateien auch richtig mit den rechten 777 und sogar mit dem ownername erstellt, den ich mit force-user eingestellt habe. Trotzdem kann nur ein user gleichzeitig auf die datei zugreifen. Wenn ich versuche, die datei mit einem texteditor zu öffnen erhalte ich ebenfalls die fehlermeldung, dass die datei bereits geöffnet ist und kann sie gar nicht oder (je nach editor) schreibgeschützt öffnen. Da scheint mir irgendwie das Problem zu liegen - was muss ich in der smb.conf einstellen, damit mehrere user gleichzeitig eine datei öffnen können? Denn unter Linux kann ich mit einem Texteditor die datei öffnen und editieren, während sie von windows aus geöffnet ist!

    Tschüss

    Jagusch

  4. #4
    Registrierter Benutzer
    Registriert seit
    May 2001
    Ort
    Emden
    Beiträge
    107
    Moinsen!

    OK, dann zeige mir (uns) doch mal bitte Deine smb.conf
    Eventuell wird daraus was erkenntlich.

    Aber noch mal zur DB allgemein. Mir ist völlig unerklärlich, wie der Zugriff überhaupt erfolgt. (das hat jetzt nix mit dem eigentlichen Problem zu tun)
    Der wird doch normalerweise über einen Alias geregelt. Und einen Alias auf einer Linux-Kiste habe ich noch nie gesehen.
    Oder wird der Zugriff über ODBC-Treiber geregelt?

    mfg

    Torsten
    104 Tasten Maus.
    Tastatur mit Scrollrad

  5. #5
    Registrierter Benutzer
    Registriert seit
    Sep 2001
    Beiträge
    64
    hallo,

    hier die smb.conf:
    -----------------------------------snip----------------------------
    # Samba config file created using SWAT
    # from peters.ja.de (192.168.2.2)
    # Date: 2002/05/19 15:26:37

    # Global parameters
    [global]
    workgroup = JAGUSCH
    encrypt passwords = Yes
    time server = Yes
    keepalive = 30
    logon script = scripts\default.bat
    domain logons = Yes
    os level = 2
    domain master = True
    preload = netlogon, homes, alle, haushalt, www, cdrom
    admin users = admin, root

    [netlogon]
    path = /home/netlogon
    admin users =
    read only = No
    guest ok = Yes
    browseable = No

    [homes]
    comment = Heimatverzeichnis
    read only = No
    create mask = 0750
    browseable = No

    [cdrom]
    comment = Linux CD-ROM
    path = /cdrom
    locking = No

    [printers]
    comment = All Printers
    path = /tmp
    create mask = 0700
    printable = Yes
    browseable = No

    [dbd]
    path = /home/alle/dbd
    force user = peter
    force group = jagusch
    read only = No
    create mask = 0777
    force create mode = 0777
    directory mask = 0777
    force directory mode = 0777
    fstype = FAT
    dos filemode = Yes
    dos filetimes = Yes
    dos filetime resolution = Yes
    -----------------------------------snap----------------------------

    Das Verzeichnis, um das es geht, ist das Verzeichnis "dbd".
    Das mit dem alias ist kein problem, denn ich kann mit "net use" im netlogon-script dem share "dbd" einen laufwerkbuschstaben zuordnen und den dann bei der alias-vergabe benutzen. Aber nicht mal das ist nötig, wenn ich das programm, das mit der datei arbeitet ins selbe verzeichnis lege und unter delphi einfach ohne alias auf die datei zugreife. All das funktioniert wie gesagt z.B. auf einem novell-server problemlos, und der unterstützt auch nicht die bde.

    Tschüss

    Jagusch

  6. #6
    Registrierter Benutzer
    Registriert seit
    May 2001
    Ort
    Emden
    Beiträge
    107
    Moinsen!

    Hmm, ich sehe gerade, dass Du mit einem Logon-Script arbeitest. Ansich sollte das kein Problem darstellen, doch sicher bin ich mir nicht.
    Evnetuell ist der Zugriff bei einem Logon-Script so geregelt, dass nur ein User zugreifen kann. Damit habe ich aber keine Erfahrung.
    Ich kann mir jedoch gut vorstellen, dass es daran liegt.
    Gehe ich recht in der Annahme, dass dbd beim Login einen Laufwerksbuchstaben zugeordnet bekommt?
    Ohne Logon-Script wird es aber erst recht nicht funktionieren, da Du dann ja keinen Pfad angeben kannst.
    Verzwickte Lage.
    Ich denke mal, dass ein User beim Zugriff auf die DB die Exklusivrechte dafür bekommt. Daher dann wahrscheinlich auch der Fehler.
    Sorry, aber eine Lösung habe ich auch nicht.

    Grüße

    Torsten
    104 Tasten Maus.
    Tastatur mit Scrollrad

  7. #7
    Registrierter Benutzer
    Registriert seit
    May 2001
    Ort
    Emden
    Beiträge
    107
    Moinsen!

    @jagusch
    Lösung gefunden?

    Kleiner Tipp am Rande.
    Borland hat die BDE, somit auch Paradox, zum "alten Eisen" gelegt. Somit wird in Zukunft in diese Richtung nichts mehr entwickelt/geändert.
    Ich versuche mich momentan mit Interbase, da ich auch noch zwei Anwendungen mit Paradox laufen habe. Eine der Anwendungen kommt so langsam in ein Statium, in dem Paradox keinen Sinn mehr macht.

    Grüße

    Torsten
    104 Tasten Maus.
    Tastatur mit Scrollrad

  8. #8
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    Mar 2000
    Ort
    Sauerland
    Beiträge
    722

    Question

    Hi,

    mal bescheidene Frage, wenn x:\pfad\... geht, schon mal \\server\pfad\... probiert? auf diese Weise kann ich auch zugreifen.

    Kannst du im Debugger nicht mal nachprüfen, wer wann welche Datei im Zugriff hat? Wenn Delphi Tabelle sagt, dann ist das meistens auch so. Paradoxusrs.lck Fehler sehen meines Wissens anders aus. Mit fuser -u Dateiname[n] können die Zugriffe auf eine Datei angezeigt werden.

    Hat da vielleicht jemand die Datei mit Exclusivrechten geöffnet (vielleicht Defaulteinstellung deines Programmes?)?

    Hans

  9. #9
    Registrierter Benutzer
    Registriert seit
    Sep 2001
    Beiträge
    64
    Hallo,
    der Zugriff über //server/pfad funktioniert ebenfalls, aber ebenfalls nur von einer workstation zur selben Zeit. Auch von der Delphi-Datenbankoberfläche aus kann nur ein user die Tabelle öffnen, was dagegen spricht, dass es an einem Exklusiv-Zugriff liegt - außerdem würde der gemeinsame Zugriff von der Anwendung aus dann auch auf einem Windows-Laufwerk nicht funktionieren; tut er aber. Irgendwas muss auf der Betriebssystemebene anders laufen - woher erhält die Anwendung die Information, dass die Datei bereits geöfnet ist? Diese Information ist bei Windows und Samba/Linux offenbar unterschiedlich. Aber worin liegt der Unterschied?
    Ich denke auch, dass ich von der BDE Absschied nehmen muss (so ganz geheuer war sie mir ohnehin nie) und versuche mich gerade in mysql und php reinzuarbeiten. Hat jemand Erfahrung darin, wie man unter delphi auf eine sql-Datenbank auf einem Linux-Server zugreift? Für Tips wäre ich riesig dankbar. Trotzdem würde ich mein Problem mit dem Dateizugriff gern noch lösen, damit meine fertigen Programme wenigstens erstmal laufen.

    Tschüss

    Jagusch

  10. #10
    Registrierter Benutzer
    Registriert seit
    May 2001
    Ort
    Emden
    Beiträge
    107
    Moinsen!

    Sorry, nun bin ich auch am Ende mit meinem Latein.
    Paradox habe ich bis dato nur auf Windows-Kisten eingesetzt.
    Bei anderen Betriebssystemen griff ich immer auf eine echte C/S-Datenbank zurück (meistens Interbase).
    Ich kann Dir lediglich noch einen letzten guten Tipp geben.
    Schau doch mal hier vorbei. www.entwickler-forum.de
    Wenn man Dir da nicht helfen kann, dann nirgends. Das Forum ist wohl das beste seiner Art mit absoluten Delphi-Cracks als Mitglieder.

    Grüße

    Torsten
    104 Tasten Maus.
    Tastatur mit Scrollrad

  11. #11
    Registrierter Benutzer
    Registriert seit
    Sep 2001
    Beiträge
    64
    Hallo Torsten u.a.,

    eine Lösung habe ich dort auch nicht gefunden, aber ich denke, ich weiß nun, warum es nicht geht. Also falls es jemanden interessiert:

    Eine Datenbank im Netzwerk zu betreiben erfordert die Möglichkeit, einzelne Datensätze zu sperren. So was war jedoch bei DOS (und damit auch bei Windows) nicht vom Betriebssystem vorgesehen. Die BDE-Entwickler haben dieses Problem umgangen, indem sie in die Datei PDOXUSRS.LCK die Länge (in Byte) der Datenbankdatei eintragen und dann DOS mitteilen, dass die Datei von Byte x bis Byte y gesperrt ist. (Byteweise sperren kann DOS nämlich). Da die BDE Linux nicht unterstützt und Linux das Byteweise Sperren einer Datei anders (oder gar nicht - da bin ich überfragt) vornimmt, funktioniert dieses Verfahren nicht, wenn die Datenbankdatei auf einem Linux-System liegt.

    So weit zu meiner Theorie. Vielleicht hat ja jemand noch eine Idee, wie man das Problem u.U. umgehen kann, ansonsten arbeite ich mich gerade in MySQL ein und denke, dass ich mich von der BDE verabschieden werde.

    Vielen Dank boch mal für die Hilfsversuche

    Jagusch

  12. #12
    Registrierter Benutzer Avatar von ChatErbse
    Registriert seit
    Dec 2001
    Ort
    Hamburg
    Beiträge
    151
    Dass könnte mit den Oplocks von Samba zusammenhängen, schau mal hier hinein: http://www.linuxforen.de/forums/show...threadid=32527

    mfg
    CE
    p200 , 128 mb, 30 GB und 40 GB , Hansenet, Mail , Printserver, Samba, Apache

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •