Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Interbase-Zugriff über Netzlaufwerk (https://www.delphipraxis.net/74028-interbase-zugriff-ueber-netzlaufwerk.html)

Werwurm 27. Jul 2006 05:59

Datenbank: Interbase • Version: 6.5 • Zugriff über: IB Komponenten

Interbase-Zugriff über Netzlaufwerk
 
Hallo,

In der letzten Zeit habe ich zwei Projekte auf Basis einer lokalen Interbase-Datenbank geschrieben.
Nun habe ich mir zusätzlich noch ein Notebook gegönnt, das ich ebenfalls mit Delphi und Interbase betankt habe.
Um zum arbeiten eine einheitliche Datenbasis habe, möchte ich diese DB's für meine zwei WinXP-Rechner zentral ablegen.
Ich habe eine NAS-Festplatte, welche ich auf beiden Clients als Netzlaufwerk eingebunden habe. Dort ist die GDB Datei abgelegt.
Wenn ich der IB-Database nun das Netzlaufwerk als Pfad ("X:\DB\db.gdb") zuweise bekomme ich den Fehler, das sich die Datei nicht öffnen lässt.

Und kommt meine blöde Frage:
Ist diese Art von Zugriff überhaupt möglich?
Oder mache ich nur etwas falsch?
Wenn ja, was???

ProgiKid 27. Jul 2006 06:56

Re: Interbase-Zugriff über Netzlaufwerk
 
Hallo,

du kannst nur Verzeichnisse als Netzlaufwerk freigeben. Also c:\temp als x: zum Beispiel. Ich habe bisher auch nur erfahrungen mit sql und mysql. Die Db kann ja ruhig auf einem (deinem alten Rechner liegen), du muss nur die Datenbank so einrichten, dass man über die Schnittstelle der Datenbank auf die Daten zugreifen kann. Dies kann manchmal nen bissl tricky sein (gerade unter Linux hatte ich da so meine Probleme, musst jokers in die Usertabelle eintragen und so ein gedöns) aber da hilft google schon nen bischen weiter. Aber bei den meisten Windows dbs ist es schon so ohne weiteres möglich.
Einfach dann im Client des geweiligen Zielrechner die Connect-Daten des db-servers angeben und ab gehts.

mkinzler 27. Jul 2006 07:11

Re: Interbase-Zugriff über Netzlaufwerk
 
Normalerweise erlaubt es IB nicht Datenbanken, die auf Netzlaufwerken liegen zu verwenden. Wir das Laufwerk als loakles Laufwerk erkannt oder als Netzlaufwerk? Welches Filesystem (NTFS)? Rechte auf Datei?

TBx 27. Jul 2006 08:00

Re: Interbase-Zugriff über Netzlaufwerk
 
Hallo!

Wenn ich Dich richtig verstehe, dann willst Du auf ein und dieselbe Datenbank mittels mehrerer Interbase-Server zugreifen.
Das ist nicht definiert und auch nicht möglich. Der Interbase/Firebird macht die Datenbankdatei exclusiv auf. Wie sonst sollten auch die Datenbankzugriffe sinnvoll verwaltet werden, wenn da mehrere DB-Server zugleich drauf rumhünern.

Zu der Ablage der Datei auf dem NAS:
- Dies ist eigentlich garnicht möglich. Hast Du es irgendwie geschafft, das NAS als lokales Laufwerk in das BS zu integrieren?
Man sollte die GDB auf keinen Fall so auslagern, da man den Interbase/Firebird selbst damit sabotiert (z.B. durch die gecacheten Zugriffe).

Also: Datenbank auf ein lokales Laufwerk des Datenbankservers und dann von allen clients aus connecten.

Gruß

onlinekater

Werwurm 27. Jul 2006 10:27

Re: Interbase-Zugriff über Netzlaufwerk
 
Hallo,

schon mal Vielen dank für die vielen schnellen Rückmeldungen. :thumb:
Nochmals als Erläuterung.

Zitat:

Der Interbase/Firebird macht die Datenbankdatei exclusiv auf. Wie sonst sollten auch die Datenbankzugriffe sinnvoll verwaltet werden, wenn da mehrere DB-Server zugleich drauf rumhünern.
Ich habe eine USB-Platte über mein DSL-Router im Netzwerk eingebunden.
Nun möchte ich entweder mit dem einem oder anderen Rechner auf die DB zugreifen.
Niemals gleichzeitig!!
Da ich nicht immer beide Rechner laufen haben möchte, stellt sich die Frage wo ich die DB lagern soll.

Zitat:

Wir das Laufwerk als loakles Laufwerk erkannt oder als Netzlaufwerk? Welches Filesystem (NTFS)? Rechte auf Datei?
Die Platte wird als Netzlaufwerk erkannt. Das Dateisystem ist NTFS. Die Rechte sind XP Standard (also Vollzugriff für jeden).

Aber ich glaube, das ich vielleicht zu naiv an die Sache ran gegangen bin. :oops:
Gibt es eventuell andere DB's die man für diesen Fall nutzen könnte??

Ralf Kaiser 27. Jul 2006 10:35

Re: Interbase-Zugriff über Netzlaufwerk
 
Halli Hallo,

wir verwenden hier eine Firebird-Datenbank (was ja nicht sooo unterschiedlich ist) und verbinden uns nicht über ein Netzwerklaufwerk sondern über den lokalen Pfad auf dem Server, dem der Rechnername vorangestellt wurde.

Beispiel:

Auf dem Server "DATA" liegt die Datenbank hier: "d:\daten\datenbank.gdb"

Dann verbinden sich die Clients mit "DATA:d:\daten\datenbank.gdb"

Das geht auch mit IP-Adressen: "192.168.1.55:d:\daten\datenbank.gdb"

Soweit ich weiss ist das die Methode mit der Interbase/Firebird auf Netzwerk-Datenbanken zugreifen, wobei ich bei Interbase mit der 5er-Version aufgehört habe und auf Firebird umgestiegen bin. Sollte aber unter der 6er-Interbase auch noch gehen.

Ciao,
Ralf

TBx 27. Jul 2006 11:01

Re: Interbase-Zugriff über Netzlaufwerk
 
Also definitiv:
Interbase/Firebird können unter Windows nicht mit Datenbanken auf Netzlaufwerken arbeiten, es müssen lokale Platten sein.

Du mußt einen Deiner Rechner als DB-Server bestimmen und diesen dann eben auch von dem anderen aus ansprechen.
Verbinden kannst Du Dich dann mit der Datenbank wie von Alfi001 beschrieben.
Ansonsten bleibt Dir nichts anderes übrig, als die Datenbank jeweils auf den anderen Rechner umsusetzen, wenn Du den Rechner wechselst.
Hierbei solltest Du beachten, daß Du entweder vor dem umkopieren/verschieben die DB-Server auf beiden Rechnern anhälst oder über gbak arbeitest, da Du Dir donst die Datenbank leicht zerschießen kannst.

Gruß

onlinekater

[Edit] Dreckfuhler [/Edit]
[Edit2] Den armen Alfi001 richtig benamselt [/Edit2]

mkinzler 27. Jul 2006 11:14

Re: Interbase-Zugriff über Netzlaufwerk
 
Zitat:

Also definitiv:
Interbase/Firebird können unter Windows nicht mit Datenbanken auf Netzlaufwerken arbeiten, es müssen lokale Platten sein.
Das stimmt nur bedingt FireBird bietet die Möglichkeit dies zu erlauben, durch setzten der Eigenschaft

RemoteFileOpenAbility = 1

in der firebird.conf

TBx 27. Jul 2006 11:28

Re: Interbase-Zugriff über Netzlaufwerk
 
Zitat:

Zitat von mkinzler
Zitat:

Also definitiv:
Interbase/Firebird können unter Windows nicht mit Datenbanken auf Netzlaufwerken arbeiten, es müssen lokale Platten sein.
Das stimmt nur bedingt FireBird bietet die Möglichkeit dies zu erlauben, durch setzten der Eigenschaft

RemoteFileOpenAbility = 1

in der firebird.conf

stimmt, den Parameter gibt es. Allerdings ist er für posix gedacht.

Zitat:

Zitat von The Firebird Book, Page 751
RemoteFileOpenAbility
Version 1.5 forward, POSIX only

CAUTION Use RemoteFileOpenAbility only with extreme caution

This is a Boolean parameter that, if set to True, allows the engine to open files that reside on a networked filesystem (NFS) mounted partition. It is intended to allow shadows on NFS drives that have high availability. It is not save for database files - except possibly a read-only database - because the filesystem is beyond the control of the local system. It should not be enabled for the purpose of opening any read/write database whose survival matters to you.
The default is 0 (False, disabled) and you should leave it that way unless you are very clear about its effects.

Dieser Parameter ist ursprünglich für eine Schattenkopie unter POSIX gedacht.
Man sollte ihn niemals für eine produktive Datenbank nutzen.

Gruß

onlinekater

Ralf Kaiser 27. Jul 2006 11:41

Re: Interbase-Zugriff über Netzlaufwerk
 
Zitat:

Zitat von onlinekater
Also definitiv:
Interbase/Firebird können unter Windows nicht mit Datenbanken auf Netzlaufwerken arbeiten, es müssen lokale Platten sein.

Noch ein Nachtrag von mir:
Das ist auch relativ einfach zu erklären: Die Datenbank-Datei wird vom Server immer exklusiv geöffnet (es darf also nur ein Prozess drauf zugreifen). Den Zugriff von mehreren Benutzern regelt der Server intern. Wenn nun von verschiedenen Rechnern per Netzwerk-Laufwerk drauf zugegriffen wird so sind dies immer unterschiedliche Zugriffe. Beim Zugriff ist die Datenbank also gesperrt.

Über die Syntax "Rechnername:Pfad_auf_dem_Server" erkennt der Server, daß es eine Datenbank ist die er bereits selbst geöffnet hat und versucht nicht diese erneut als Datei zu öffnen sondern verwendet das bereits bestehende Dateihandle. (hat mir mal jemand erklärt der sich gut mit den Interna von Firebird auskennt)

Zitat:

Zitat von onlinekater
Verbinden kannst Du Dich dann mit der Datenbank wie von Alhi001 beschrieben.

Alfi001, bitteschön! Nicht Alhi001! :wink:

Ciao,
Ralf


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz