AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird embedded, Datenbank auf Netzlaufwerk
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird embedded, Datenbank auf Netzlaufwerk

Ein Thema von SvB · begonnen am 14. Okt 2008 · letzter Beitrag vom 14. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 01:09
Datenbank: Firebird embedded • Version: 2.1.1 • Zugriff über: Zeos 6.3.3
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:
Im Projekt xxx.EXE ist eine Exception der EZSQLException mit der Meldung 'SQL Error: Unable to complete network request to host "<IP-Adresse>". Failed to establish a connection. Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort. . Error Code: -902. Unsuccessful execution caused by system error that precludes
successful execution of subsequent Statements The SQL: CREATE DATABASE 'DB.fdb' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1;' aufgetreten
Mein Quellcode sieht folgendermaßen aus
Delphi-Quellcode:
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;
In den Eigenschaften von ZConnection steht folgendes
Delphi-Quellcode:
HostName := '';
Protocol := 'firebirdd-2.0';
Ansonsten ist nichts gesetzt.

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:
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;
Wo liegt das Problem. Ich suche jetzt schon Stunden in allen möglich Foren, habe aber nichts gefunden.
Es ist auch sonst nicht von Firebird oder Interbase auf meiner Entwicklungsmachine installiert.

Danke
Sven
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 03:07
Zitat von SvB:
Meine Projekte liegen grundsätzlich auf einem Netzwerklaufwerk und ich möchte per Programm die Datenbank im Programmordner erstellen...
Also : Zeos und Netzwerk ist schon mal fast tödlich. Durch embedded FB wird das Ganze dann vollkommen unsinnig und unbrauchbar. -> Grundlagen. Soweit meine Stellungnahme. Was soll denn das überhaupt werden ?

Edit : warum soll die DB erst zur Laufzeit erzeugt werden ?
Gruß
Hansa
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 07:37
[einmisch]
Zitat von Hansa:
Also : Zeos und Netzwerk ist schon mal fast tödlich. Durch embedded FB wird das Ganze dann vollkommen unsinnig und unbrauchbar. -> Grundlagen.
Wo gibt es ein Tutorial über die Dos and Don'ts bei der Verbindung zwischen Delphi und Firebird? Das die Embedded-Version wohl nur exklusiven Zugriff auf eine lokale DB erlaubt, weiss ich... Aber der Rest?
[/einmisch]
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 08:59
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 von Hansa:
Edit : warum soll die DB erst zur Laufzeit erzeugt werden ?
Warum soll man die Datenbank nicht vom Programm aus anlegen lassen. Ich sehe überhaupt gar keinen Grund, warum ich das manuell über irgendein Admin Tool machen sollte. Wenn die Datenbank nicht da ist, wird sie angelegt und ich bin immer sicher, dass das dann auch passt. Ich mache das in der Regel immer so. In eine spezielle Tabelle kommt dann noch eine Versionsnummer der Datenbank rein und wenn es Programmupdates gibt, dann wird die Version der Datenbank abgefragt und eventuell angepasst, falls z.B. in einer Tabelle ein Feld dazu kommt.

Zitat von Hansa:
Also : Zeos und Netzwerk ist schon mal fast tödlich. Durch embedded FB wird das Ganze dann vollkommen unsinnig und unbrauchbar. ->
Das verstehe ich nicht. Ich möchte ganz einfach mit einem Programm auf eine Datenbank zugreifen, egal ob die auf einer lokalen Platte oder auf einem Netzwerklaufwerk liegt, dass sollte doch gar nicht so schwierig sein. Ich weiß auch, dass bei Firebird Embedded die Datenbank exklusiv geöffnet wird, was auch beabsichtigt ist, aber das sollte doch auch egal sein, wo sie liegt.

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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 09:05
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 09:13
@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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 09:40
Hai Sven,

hast Du schon mal versucht den Netzwerkpfad mit SUBST zu mappen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#8

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 14:45
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
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 16:16
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 unterhttp://www.yahoogroups.com/messages/firebird-support etliches durchgeschaut mit dem selbe Problem und dort wird immer wieder gesagt, dass es nicht geht. Ich denke mal, dann werde ich das so hinnehmen und halt während der Entwicklung mir irgendwo lokal die Datenbank anlegen. Da es später sowieso lokal läuft kann ich damit sehr wahrscheinlich gut leben.

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
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#10

Re: Firebird embedded, Datenbank auf Netzlaufwerk

  Alt 14. Okt 2008, 16:54
Fairerweise muß man sagen das bei FBEmbedded auch kein Zugriffsschutz existiert. . . .

Grüße // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.
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