Autor Beitrag
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 24.06.14 15:47 
Hallo zusammen,

mal wieder ein Post seit längerer Inaktivität... ;-)

ich bin ein wenig am verzweifeln. Ich nutze das BDS 2006 und verbinde mich via DBX (DB2CLI.DLL & DBXDB230.dll) gegen eine DB2-LUW-Datenbank (Version 9.7.5).

Ich habe festgestellt, dass DB2 parametrisierte Queries nicht sehr gut ausführt (DB2 ignoriert Indizes, die durch die Parameter angesprochen werden) und wollte mit einem Eintrag "REOPT=4" in der DB2CLI.ini erreichen, dass der DB2-Optimizer parametrisierte Queries bei jedem Aufruf erneut optimiert.

Das klappt auch und bewirkt die erhoffte Beschleunigung diverser Statements, hat aber einen fiesen Nebeneffekt, der scheinbar in keinem Zusammenhang damit steht:

Ich kann Blobfelder dann nicht mehr auslesen. Hier mal der Code, den ich nutze, um einfach mal den Inhalt eines Blobfeldes von einem bestimmten Datensatz abzufragen, den Stream verwerfe ich dann einfach wieder.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm17.Button1Click(Sender: TObject);
var stream:TMemoryStream;
begin
   SQLDataset.Open;
   try
      Memo1.Lines.Clear;
      stream := TMemoryStream.Create;
      try
         TBlobField(SQLDataset.FieldByName('MYBLOBFIELD')).SaveToStream(stream);
      finally
         stream.free;
      end;
   finally
      SQLDataset.Close;
   end;
   ExtSQLConnection1.Close;
end;


Steht in der DB2CLI.ini oben genannter Reopt-Eintrag, bekomme ich eine Exception "dbExpress Error: Unknown Error Code '65535'" geliefert, sie hat ihren Ursprung in der BDS-eigenen Unit SqlExpr, Zeile 1098. Entferne ich den Eintrag in der Ini-Datei, kommt die Routine fehlerfrei zurück...

Google und das Embarcadero QC lieferten mir keine Hinweise. Irgendjemand eine Idee, was das sein könnte?

Viele Grüße

Andreas

Moderiert von user profile iconMartok: Code- durch Delphi-Tags ersetzt