AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi läuft der Firebird Server ? - ohne vohandene Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

läuft der Firebird Server ? - ohne vohandene Datenbank

Ein Thema von haentschman · begonnen am 7. Okt 2008 · letzter Beitrag vom 9. Okt 2008
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

läuft der Firebird Server ? - ohne vohandene Datenbank

  Alt 7. Okt 2008, 19:47
Datenbank: Firebird • Version: 2.0 • Zugriff über: Zeos
Hallo an alle...

Ich bräuchte mal wieder die Richtung.

wie kann ich aus Delphi heraus ohne vorhandene Datenbank ermitteln:
- ob der Firebird Server im lokalen Netz läuft... ggf. auf welchem Computer
- ob der Server reagiert sprich funktionsfähig ist

Hintergrund:
- Ich möchte das im Vorfeld prüfen bevor eine Datenbank erzeugt wird. Macht Sinn oder ?
- Ich hatte bei einer Ferninstallation per Telefon meines Programmes das Problem, daß immer ein Verbindungsfehler auflief, ich aber evt. Schreibfehler in den Pfadangaben nicht sehen konnte und der Computerfachmann auf der anderen Seite des Telefons versicherte, daß der Server läuft. Mit diversen Tricks haben wir es dann zum Laufen bekommen.
- Ich möchte einfach die Erstinstallation "Idiotensicher" machen damit ich weniger telefonieren muß

Danke für Infos...
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: läuft der Firebird Server ? - ohne vohandene Datenbank

  Alt 7. Okt 2008, 20:32
Du könntest
1.) den Rechner anpingen

2.) prüfen, ob in der Datei %SYSTEM32%\etc\drivers\protocol ein Eintrag vorhanden ist, der mit "gds_db" beginnt
Falls der Eintrag fehlt, grosse Fehlermeldung ausgeben, dass der Administrator das ändern muss
bzw. selbst versuchen die Zeile
Code:
gds_db           3050
anzuhängen.

3.) über TCP/IP eine Verbindung zum Server über Port gds_db herstellen und gleich wieder schliesen
Wenn das klappt stehen die Chancen gut, dass da ein Firebird Server übers Netz erreichbar ist.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

Re: läuft der Firebird Server ? - ohne vohandene Datenbank

  Alt 8. Okt 2008, 18:41
Hallo...

Danke für Deine Antwort. Ich habe dann mal bei mir geschaut... Der Eintrag ist bei mir nicht vorhanden und der Server läuft und arbeitet...

der Inhalt von %System32%\drivers\etc\protokoll
Zitat:
ip 0 IP # Internet Protocol
icmp 1 ICMP # Internet Control Message Protocol
ggp 3 GGP # Gateway-Gateway Protocol
tcp 6 TCP # Transmission Control Protocol
egp 8 EGP # Exterior Gateway Protocol
pup 12 PUP # PARC Universal Packet Protocol
udp 17 UDP # User Datagram Protocol
hmp 20 HMP # Host Monitoring Protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # "Reliable Datagram" Protocol
rvd 66 RVD # MIT Remote Virtual Disk
...und nun

...ich versuche mich parallel durch die Firebirdseite zu forsten
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: läuft der Firebird Server ? - ohne vohandene Datenbank

  Alt 8. Okt 2008, 18:51
Der Eintrag existiert nicht, also wurde höchstwahrscheinlich von diesem Rechner noch auf keinen externe FireBird-Server zugegriffen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

Re: läuft der Firebird Server ? - ohne vohandene Datenbank

  Alt 8. Okt 2008, 18:51
Ich bin der Meinung, dass Du das garnicht so machen kannst. Ausser Du prüfst remote, ob der Dienst auf dem Rechner läuft. Wenn der Dienst läuft ist alles gut, ansonsten Fehlermeldung. Es wird nur schwierig, wenn Firebird auf einem Linux-Rechner läuft.
Denn wenn der Firebird-Dienst auf dem Server läuft ist ja noch nicht klar ob Du eine Datenbank erstellen kannst. Deshalb würde ich einfach versuchen, die Datenbank zu erstellen und dann die entsprechende Fehlermeldung ausgeben. Danach kann dann der User dementsprechend handeln.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

Re: läuft der Firebird Server ? - ohne vohandene Datenbank

  Alt 8. Okt 2008, 19:10
Danke an alle...

Zitat:
Deshalb würde ich einfach versuchen, die Datenbank zu erstellen und dann die entsprechende Fehlermeldung ausgeben. Danach kann dann der User dementsprechend handeln.
...so läuft es ja im Moment.

Ich hatte nur die Hoffnung eine Procedure zu haben, wo ich im Ergebnis unterscheiden kann, ob der Server vorhanden / läuft oder nicht oder die Datenbank wegen z.B. unzureichender Schreibrechte auf das Verzeichnis der Wahl des Kunden nicht erzeugt werden kann.

Mir geht es um eine Differenzierung.

PS:
...ich weiß nicht ob Ihr´s wußtet
erschwerend ist noch, daß ich das ZConnection.Connect in einem try/except Block stehen habe. Nun lese ich im AfterConnect diverse Daten ein. Tritt in einer dieser Einleseproceduren ein Fehler auf läuft das Programm in den except Block von ZConnection.Connect.
d.h. ich kann im Moment nicht richtig unterscheiden wo der Fehler auftritt...
- Als Lösung fiel mir bisher nur ein, daß ich eine Variable entsprechend der Ablaufposition setze und diese dann im except auswerten kann und somit die Fehlerposition eingrenze.
...andere Vorschläge sind auch willkommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: läuft der Firebird Server ? - ohne vohandene Datenbank

  Alt 9. Okt 2008, 14:06
Hallo,

1. setze alle Einlesepürozeduren auch in ein try except
2. oder, erzeuge eigene Exceptions

Zu dem Server-Finden-Problem.

Du kannst ja das Services-API benutzen.
Z.B. die die Versionsnummer auslesen.

Dazu muss du aber zumindestens einen gültigen User-Name haben.


Heiko
Heiko
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: läuft der Firebird Server ? - ohne vohandene Datenbank

  Alt 9. Okt 2008, 15:01
Hi,

Zitat von sx2008:
2.) prüfen, ob in der Datei %SYSTEM32%\etc\drivers\protocol ein Eintrag vorhanden ist, der mit "gds_db" beginnt
Falls der Eintrag fehlt, grosse Fehlermeldung ausgeben, dass der Administrator das ändern muss
bzw. selbst versuchen die Zeile
Code:
gds_db           3050
anzuhängen.
was das bringen soll ist mir echt ein Rätsel. Es gehört zum "guten Ton" dass eine Anwendung die einen Port benötigt sich dort auch einträgt - funktionell spielt das absolut keine ROlle.

Wenn da kein Eintrag ist, vermute ich ganz stark, dass die FB-Installation durch das Entpacken der ZIP-Datei vorgenommen wurde und nicht mit dem Setup-Programm.


Zitat von haentschman:
...ich weiß nicht ob Ihr´s wußtet Wink
erschwerend ist noch, daß ich das ZConnection.Connect in einem try/except Block stehen habe. Nun lese ich im AfterConnect diverse Daten ein. Tritt in einer dieser Einleseproceduren ein Fehler auf läuft das Programm in den except Block von ZConnection.Connect. Grübelnd...
d.h. ich kann im Moment nicht richtig unterscheiden wo der Fehler auftritt...
- Als Lösung fiel mir bisher nur ein, daß ich eine Variable entsprechend der Ablaufposition setze und diese dann im except auswerten kann und somit die Fehlerposition eingrenze.
...andere Vorschläge sind auch willkommen Thumbs up!
Ist doch ganz einfach: Mach vor dem eigentlichen Connect auf die DB einen Connect mit einer weiteren ZConnectionInstanz - bzw. schreib dir ne Methode:

Delphi-Quellcode:
function IsFBServerRunning(AServerIP:String):Boolean;
var oZConnection:TZConnection;
begin
  oZConnection:=TZConnection.Create();
  try
    oZConnection.xxx:=AServerIP;
    try
      oZConnection.Connect;
      result:=true;
    except
      result:=false;
    end;
  finally
    FreeAndNil(oZConnection);
  end;
end;
Hinweis: Den Code habe ich "frei Hand" geschrieben - keinen Anspruch auf Vollständigkeit!

wenn Du es noch besonders korrekt machen willst, überprüfst Du im Except-Fall einfach die zurückgelieferte Exception ab und wertest die aus. Noch eine Verbesserung: Du kannst den Server ja vor dem eigentlichen Connect mit der TZConnection auch noch anpingen - dann weißt Du wenigstens dass sich grundsätzlich jemand meldet....

Grüße
Lemmy
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:32 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