Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FireDAC und Fehler: Verbindung mit "hstmt" belegt (https://www.delphipraxis.net/190094-firedac-und-fehler-verbindung-mit-hstmt-belegt.html)

rokli 30. Aug 2016 10:23

Datenbank: MS SQL • Version: div • Zugriff über: FireDAC / ODBC

FireDAC und Fehler: Verbindung mit "hstmt" belegt
 
Hallo zusammen,

seid Delphi 10 habe ich begonnen, meine Datenbankanwendungen nicht mehr mit BDE (die ganz alten) oder dbGo, also ADO, zu entwickeln, sondern ich verwende FireDAC via ODBC auf SQL Server. Das ist im Prinzip ganz schön; aber ich habe nach wie vor, wenn ich nicht aufpasse, die Fehlermeldung:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt TEST.exe ist eine Exception der Klasse EODBCNativeException mit der Meldung '[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver]Die Verbindung ist mit Ergebnissen von einem anderen hstmt belegt' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------


In der Hilfe zu FireDAC habe ich gelesen, dass es sich bei der Meldung darum handelt, dass 2 (oder mehrere) TFDQuery auf EINER TFDConnection GLEICHZEITIG geöffnet werden sollen. Und das ist auch wohl so. Wenn man darauf achtet, die 2 TFDQuery nacheinander zu öffnen, ist alles gut und die Meldung kommt nicht. Nur das geht oft nicht immer nacheinander, weil ich aus 2 Abfragen die Ergebnisse gleichzeitig benötige.

Nun lege ich mehrere TFDConnection zu ein und derselben DB an, damit ich mehrere TFDQuery gleichzeitig öffnen kann.

Früher (BDE / ADO) habe ich immer EINE Connection pro DB gehabt und die benötigte Anzahl an Querys mit der einen Connection verbunden.

Und hier kommt nun meine Frage: Ist das eigentlich richtig so? Öffnet Ihr unter FireDAC auch mehrere Conncetions, wenn Ihr gleichzeitig mehrere Querys zu einer DB benötigt?

Danke für Eure Tipps und Anregungen.

Gruß
Rolf

jaenicke 30. Aug 2016 13:53

AW: FireDAC und Fehler: Verbindung mit "hstmt" belegt
 
Hast du den SQL Server Native Client installiert?
Ansonsten wird der Standardtreiber benutzt und der kann so etwas nicht.

TiGü 30. Aug 2016 15:28

AW: FireDAC und Fehler: Verbindung mit "hstmt" belegt
 
Ist mir heute auch erst passiert! :shock:
Der von jaenicke angesprochene Client ist das sqlncli.msi passend zur Bittigkeit deines Systems: https://www.microsoft.com/en-us/down....aspx?id=43339

juergen 30. Aug 2016 22:11

AW: FireDAC und Fehler: Verbindung mit "hstmt" belegt
 
Hallo,

ich hatte genau denselben Fehler mit AnyDac (jetzt FireDac). Aber nur mit dem native Client in Version 11, in Version 10 nicht.
Beheben konnte ich das unter
Options der "ADConnection" bei "Fetch-Options" --> General Fetchs, Cursor Kind auf "ckStatic" setzen.

Ich hoffe das hilft dir, ich hatte länger suchen müssen.

rokli 1. Sep 2016 06:34

AW: FireDAC und Fehler: Verbindung mit "hstmt" belegt
 
Guten Morgen!

Erst einmal vielen Dank für die Infos! Hatte gestern und vorgestern so viel um die Ohren, dass ich erst heute posten kann...

Also was den ODBC Client an geht, habe ich

SQL Server (6.01.7601.17514)
SQL Server Native Client 10.0 (2007.100.4064.00) und
SQL Server Native Client 11.0 (2011.110.2100.60) auf meinem Rechner.

Dabei musste ich sogar feststellen, das es Probleme gibt, wenn ich z. B. den Native 11 bei der Entwicklung verwendet habe, und auf dem Ziel PC eine andere Version vom ODBC Treiber installiert ist. Seitdem ich den "kleinsten gemeinsamen" Treiber verwende ist da nichts mehr passiert.

@Juergen: Deinen Tipp muss ich noch testen ... auch da bin ich noch nicht zu gekommen.

Aber mich interessiert noch die Thematik mit den Connections: Macht Ihr für jede Query eine eigene auf, oder lasst Ihr alle Querys über die gleiche Connection laufen? Bei MS wird ja darauf hingewiesen, immer alle Verbindungen so schnell wie möglich wieder zu schließen! Und viele Connections sind demnach :twisted: Teufelszeugs!

Gruß
Rolf

juergen 1. Sep 2016 19:35

AW: FireDAC und Fehler: Verbindung mit "hstmt" belegt
 
Bis jetzt hatte ich immer nur eine Connection verwendet.

QuickAndDirty 2. Sep 2016 10:11

AW: FireDAC und Fehler: Verbindung mit "hstmt" belegt
 
Wir verwenden hier nur eine connection.
Wenn man den aktuellsten Native-Client installiert kommt der Fehler nicht mehr. So zumindest unsere Erfahrung. Der kommt nur mit dem Standard-ODBC-Treiber von Windows.
Unser Client Setup installiert den immer gleich mit. Genauso wie wir auch für Firebird die FBClient.dll und das c++-Redist paket von microsoft und die GDIplus.dll immer mitliefern.

rokli 3. Sep 2016 11:05

AW: FireDAC und Fehler: Verbindung mit "hstmt" belegt
 
Moin!

Also ich habe jetzt die Einstellung von Juergen gestet:

Zitat:

Options der "ADConnection" bei "Fetch-Options" --> General Fetchs, Cursor Kind auf "ckStatic" setzen.
Und tatsächlich ist der Fehler nicht mehr aufgetreten.:thumb: Ich hatte verschiedene Tests gemacht, von denen ich wusste, dass es knallt - aber ist nun vorbei (ODBC Version MS SQL NATIVE 10. und 11.). Das bedeutet für mich, auch in Zukunft wieder schön eine Connection pro Datenbank ...:wink:

Vielen Dank für die hilfreichen Tipps!

Gruß
Rolf


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf