![]() |
Datenbank: Firebird embedded • Version: 2.1.1 • Zugriff über: Zeos 6.3.3
Firebird embedded, Datenbank auf Netzlaufwerk
Ich spiele gerade mit Zeos und Firebird embedded rum, da ich das für ein Projekt benötige.
Meine Projekte liegen grundsätzlich auf einem Netzwerklaufwerk und ich möchte per Programm die Datenbank im Programmordner erstellen. Ich bekomme aber immer folgende Fehlermeldung: Zitat:
Delphi-Quellcode:
In den Eigenschaften von ZConnection steht folgendes
ZConnection1.Database := ExtractFilePath(ParamStr(0)) + 'DB.fdb';
ZConnection1.Properties.Add ('CreateNewDatabase=CREATE DATABASE ' + QuotedStr(ExtractFilePath(ParamStr(0)) + 'DB.fdb') + ' USER ' + QuotedStr ('sysdba') + ' PASSWORD ' + QuotedStr ('masterkey') + ' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1'); ZConnection1.Connect;
Delphi-Quellcode:
Ansonsten ist nichts gesetzt.
HostName := '';
Protocol := 'firebirdd-2.0'; Warum versucht Firebird immer über die IP zuzugreifen?????? Wenn ich das ganze so ändere, das die Datenbank direkt auf C:\ erstellt wird, dann funktionierts ohne Probleme.
Delphi-Quellcode:
Wo liegt das Problem. Ich suche jetzt schon Stunden in allen möglich Foren, habe aber nichts gefunden.
ZConnection1.Database := 'C:\DB.fdb';
ZConnection1.Properties.Add ('CreateNewDatabase=CREATE DATABASE ' + QuotedStr('C:\DB.fdb') + ' USER ' + QuotedStr ('sysdba') + ' PASSWORD ' + QuotedStr ('masterkey') + ' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1'); ZConnection1.Connect; Es ist auch sonst nicht von Firebird oder Interbase auf meiner Entwicklungsmachine installiert. Danke Sven |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
Zitat:
Edit : warum soll die DB erst zur Laufzeit erzeugt werden ? |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
[einmisch]
Zitat:
[/einmisch] |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
Folgender Hintergrund: Ich schreibe gerade an einer Applikation, die, wenn sie fertig ist, auf einem Embedded System mit XP Embedded läuft. Parallel haben wir uns auch eine neue Hardware für die nächste Version zugelegt, die unter Linux läuft und das aktuelle Projekt soll später so umgestellt werden, dass es dann auch mit Freepascal / Lazarus unter Linux läuft. Da ich nur von diesem einen Programm Zugriff auf die Datenbank brauche, habe ich mich im Moment für Firebird Embedded entschieden. Außerdem wollte ich mich damit auch mal etwas beschäftigen um zu sehen wie das funktioniert.
Mein Delphi 2007 ist aktuell in einer XP VM installiert und mein Projekt liegt auf einem Netzwerklaufwerk. Deshalb soll auch die Datenbank im gleichen Ordner auf dem Netzwerklaufwerk liegen. Zitat:
Zitat:
Das fertige Projekt läuft später auf jeden Fall auf einem lokalen Laufwerk, nur möchte ich es halt jetzt zur Entwicklung wie gehabt auf meinem Netzwerklaufwerk auf dem Server belassen, weil Nachts automatisch eine Datensicherung auf Band läuft und ich mir manuelles hin und her kopieren auf ein lokales Laufwerk ersparen möchte. Da können sich nämlich mal dumme Benutzerfehler einschleichen, dass z.B. falsch rum kopiert wird und man sich eine alter Version über neue drüber kopiert. Außerdem möchte ich auch keine zusätzliche Software einsetzen, die so was automatisch macht. Vielleicht hat ja doch jemand eine Idee, wie ich das, nur zur Entwicklung, so hinbekomme, ansonsten muss ich halt mit einer lokalen Datenbank zur Entwicklungszeit leben. Oder ich probiere einfach mal das ganze direkt als "Superserver" laufen zu lassen, das brauche ich ja dann auch für die Linux Variante, da es dort kein Embedded gibt. Danke erst mal Sven |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
Ich finde Deinen Ansatz vernünftig, aber soweit ich das verstanden habe, scheint Embedded-FB und Netzlaufwerk Probleme zu bereiten, weil die FBClient.DLL wohl denkt "Netlaufwerk? Oh, da muss ein Server sein". Versuche es doch einfach mit einer Laufwerksverknüpfung. Da die finale Version eh mit lokalen Daten arbeitet, ist das doch keine Einschränkung (außer von Embedded-FB).
P.S.: Deine Verwunderung über diese unsinnige Einschränkung kann ich nachvollziehen. Ich halte mich aber lieber aus der Diskussion raus, weil es genügend FB-Cracks hier gibt, die Dir Vorträge darüber halten können. |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
@alzaimar: Mein Laufwerk ist verknüpft, d.h. Laufwerksbuchstabe U: ist mit dem UNC Namen verküpft und ich greife nur über den Laufwerksbuchstaben zu. Firebird denkt aber trotzdem, es wäre ein Server und versucht über IP drauf zuzugreifen, das ist das Problem.
Na mal schauen, vielleicht hat ja noch jemand eine Idee. Danke |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
Hai Sven,
hast Du schon mal versucht den Netzwerkpfad mit SUBST zu mappen? |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
Das Problem liegt leider in ZEOS.
Da diese aus dem UNC-Pfad zur Datenbank den Servernamen ermitteln und nun nicht mehr den lokalen Rechner anfunken sondern direkt den Rechner auf dem die Datenbank im Netz liegt. Mit Fib geht es. Leider hilft da der Subst-Trick auch nicht. Grüße // Martin |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
Hai, mit subst habe ich es auch schon probiert und wie mschaefer berichtet, funktioniert dieser Trick auch nicht.
Das Problem scheint aber nicht nur an ZEOS zu liegen, denn wenn ich ZConnection.Properties.Add('CreateNewDatabase=.... . einbaue, dann soll mir ja, bevor irgendeine Datenbank geöffnet wird, erst mal eine angelegt werden. Es wird dann intern isc_dsql_execute_immediate mit dem SQL CREATE DATABASE aufgerufen, ohne dass irgendetwas umgewandelt wird. Die eigenschaft HostName ist leer und wird dementsprechend nicht benutzt. Firebird intern muss das irgendwie umwandelt, bzw. meint dann es wäre eine Serververbindung. Vielleicht macht Fib da irgendetwas, damit das dann trotzdem geht. Ich habe auch noch mal unter ![]() Trotzdem schade. Ich habe auch schon etwas mit SQLite gespielt, da ist das kein Problem. Allerdings habe ich da keinen Zugriffsschutz, weswegen ich zu Firebird kam. Trotzdem Danke, mal schauen wie ich weiterkomme. Grüße Sven |
Re: Firebird embedded, Datenbank auf Netzlaufwerk
Fairerweise muß man sagen das bei FBEmbedded auch kein Zugriffsschutz existiert. . . .
Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz