AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC TFDIBInfo: Invalid clumplet buffer structure
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC TFDIBInfo: Invalid clumplet buffer structure

Ein Thema von WiPhi · begonnen am 25. Sep 2017 · letzter Beitrag vom 26. Sep 2017
Antwort Antwort
Seite 1 von 2  1 2      
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#1

FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 25. Sep 2017, 14:41
Datenbank: Firebird • Version: 2.5.7 • Zugriff über: FireDAC
Hallo alle zusammen,

ich habe ein Problem beim Zugriff auf meine Firebird Datenbank via FireDAC. Ich möchte von der Datenbank die Versionsinformationen auslesen, hierfür verwende ich folgende Funktion:
Delphi-Quellcode:
function TDBInterface.RetrieveServerVersionStr: String;
var
  FIBServerProperties: TFDIBInfo;
  Version: TIBInfo.TVersion;
begin
  Result := EmptyStr;
  FIBServerProperties := TFDIBInfo.Create(nil);
  try
    FIBServerProperties.Host := 'SERVERNAME';
    FIBServerProperties.Port := 3050;
    FIBServerProperties.Protocol := ipTCPIP;
    FIBServerProperties.DriverLink := FDPhysFBDriverLink;
    FIBServerProperties.UserName := 'SYSDBA';
    FIBServerProperties.Password := 'pass';

    FIBServerProperties.QueryTimeout := 3;
    FIBServerProperties.ConnectTimeout := 5;

    FIBServerProperties.GetVersion(Version); // <- EIBNativeException mit der Meldung [FireDAC][Phys][FB]Invalid clumplet buffer structure: buffer end before end of clumplet - clumplet too long
    Result := Version.FServerStr;
  finally
    FIBServerProperties.Free;
  end;
end;
Der Aufruf von
Code:
FIBServerProperties.GetVersion(Version)
führt zu der im Code genannten Exception.

Durch etwas probieren, habe ich folgendes herausfinden können:
Kommentiere ich die Zeilen
Code:
    FIBServerProperties.QueryTimeout := 3;
    FIBServerProperties.ConnectTimeout := 5;
aus, wird FIBServerProperties.GetVersion(Version) korrekt ausgeführt und ich erhalte die gewünschten Informationen. Jedoch funktioniert das nur auf einer lokalen Datenbank. Auf einer Datenbank, die auf einem Server liegt, erhalte ich
Code:
EIBNativeException mit der Meldung '[FireDAC][Phys][FB]Unable to complete network request to host
(Vermutlich, weil der Server keine Zeit zum Antworten bekommt.)

Suche ich nach dem Buffer Fehler, finde ich einen Eintrag in der Firebird FAQ: http://www.firebirdfaq.org/faq320/
Zitat:
If you use Firebird API directly from C, check your code. Otherwise it may be a bug in your connectivity library. It is also a common error message when you don't use multibyte character sets properly (for example UTF-8).
Kann mir jemand helfen oder ist das ein Fehler in der FireDAC Schnittstelle?

Über Antworten und Tipps würde ich mich sehr freuen!

P.S.: Ich verwende übrigens FireDAC aus der Delphi Prof. 10.2.1
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
hoika

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

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 25. Sep 2017, 21:52
Hallo,
hast du mal die Firewalls ausgeknippst?
Kannst du "SERVERNAME" sonst erreichen?
Was ist, wenn die lokal bist, aber per Localhost auf die DB zugreifst?
Heiko

Geändert von hoika (25. Sep 2017 um 22:00 Uhr)
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 25. Sep 2017, 22:02
Firewall hab ich deaktiviert.
Die Schnittstelle und diese Funktion funktionierte auch mit einer FIBPlus-Schnittstelle, die ich gerne ersetzen möchte.
DB kann ich also erreichen. Über lokal ist das ja auch alles kein Problem, problematisch wird es wohl erst wenn ich im Netz arbeite.
Wer sucht, der findet. Wer länger sucht, findet mehr.

Geändert von WiPhi (25. Sep 2017 um 22:06 Uhr)
  Mit Zitat antworten Zitat
hoika

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

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 25. Sep 2017, 22:10
Hallo,
schon gesehen, dass es FireDac ist

Kannst du denn die Version der DB auf dem Server auslesen,
wenn du die lokal funktionierende DB mal auf den Server packst?

Also die identische Datei benutzen.
Heiko
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 26. Sep 2017, 08:13
Habe das gerade nochmal getestet, nein das Auslesen der Version geht nicht, wenn ich die lokal funktionierende DB auf einen Server packe.

Ich erhalte wie eingangs erwähnt mit
Delphi-Quellcode:
    FIBServerProperties.QueryTimeout := 3;
    FIBServerProperties.ConnectTimeout := 5;
eine

Code:
EIBNativeException mit der Meldung [FireDAC][Phys][FB]Invalid clumplet buffer structure: buffer end before end of clumplet - clumplet too long
und ohne eine

Code:
EIBNativeException mit der Meldung '[FireDAC][Phys][FB]Unable to complete network request to host
Also kann es an der Datenbank nicht liegen.
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 26. Sep 2017, 08:35
Moin...
Nur mal so am Rande...
Hast du den FireDAC Client/Server Pack
https://www.embarcadero.com/de/app-d...ack-for-delphi
gekauft? In der Professional Version ist nur Lokal drin.

Die Meldung:
Zitat:
EIBNativeException mit der Meldung '[FireDAC][Phys][FB]Unable to complete network request to host
...riecht danach das du den Standard hast.
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 26. Sep 2017, 10:17
Nein, den habe ich nicht. Ich habe nur die Standard-version, die bei Delphi Prof dabei ist.

Was mich daran wundert ist, das alle anderen Funktionen Client/Server technisch gehen. Also DB Abfragen (Select) und Änderungen (Insert, Update, Delete), Modifikationen wie CREATE, ALTER und DROP habe ich auf die schnelle noch nicht getestet.

Kann mir dazu jemand eine Auskunft geben, ob ich mit der Standard bezühlich der SQL Anweisungen bei einem Client/Server zukünftig in Probleme laufe? Derzeit ist das Budget für den Client/Server Pack noch nicht gegeben. Notfalls müsste ich auf das Auslesen der Server Version erstmal verzichten, aber deswegen mir den Client/server Pack zu kaufen ist erstmal nicht drin

Danke für die bisherigen Infos, daran hatte ich nicht gedacht.
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 26. Sep 2017, 10:41
Nutzt Du nur FireBird-Datenbanken oder muss die Lösung (auf Dauser) datenbankunabhängig sein?

Serverversion von Firebird per SQL abfragen:
SELECT rdb$get_context('SYSTEM', 'ENGINE_VERSION') from rdb$database; http://www.firebirdfaq.org/faq223/
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 26. Sep 2017, 10:48
Derzeit ist es nur eine Firebird-DB und das wird auch erstmal so bleiben. Deine Abfrage wäre auch mein Notausgang gewesen

Nur habe ich jetzt ein bisschen Panik, dass meine Anwendung wegen der Aussage von haentschman den Dienst bei Client/Server verweigert... Erste Tests widersprechen dem jedoch und es scheint auch alles zu funktionieren.

Ich frage einfach mal in die Runde: Haben andere die Delphi Prof mit FireDAC Standard im Client/Server Betrieb mit Firebird im Einsatz?
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: FireDAC TFDIBInfo: Invalid clumplet buffer structure

  Alt 26. Sep 2017, 10:52
Was heißt client/server? Wenn das Server-Programm auf die (für das Server-Programm) Lokal liegende Datenbank zugreift gibt es ja kein Problem?
Ralph
  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 20:08 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