- Dieses Thema hat 1 Antwort und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 2 Jahren, 6 Monaten von Torsten Uhr.
- Beitrag
-
- 27. April 2022 um 13:23 Uhr
Hallo,ich rufe mit dem Datenbank Adapter zwei Prozedur Calls mit Parametern auf (Typ “Procedure” auf MSSQL Server).
Der erste Call wird sehr schnell ohne Probleme abgearbeitet.
<hr />
2022-04-27 12:50:59.295 [INFO ] [MSSQL] [CONNECTION 0] establishing connection 2022-04-27 12:50:59.404 [INFO ] [MSSQL] [CONNECTION 0] execute UPDATE 2022-04-27 12:50:59.413 [DEBUG] [MSSQL] [CONNECTION 0] procedure call to be executed: {call proc_ABC(?, ?, ?)} 2022-04-27 12:50:59.413 [DEBUG] [MSSQL] [CONNECTION 0] prepare callable statement: {call proc_ABC(?, ?, ?)} 2022-04-27 12:50:59.413 [DEBUG] [MSSQL] [CONNECTION 0] set parameter values 2022-04-27 12:50:59.413 [TRACE] [MSSQL] [CONNECTION 0] set parameter #1: parameter1 2022-04-27 12:50:59.413 [TRACE] [MSSQL] [CONNECTION 0] set parameter #2: parameter2 2022-04-27 12:50:59.413 [TRACE] [MSSQL] [CONNECTION 0] set parameter #3: parameter3 2022-04-27 12:50:59.413 [DEBUG] [MSSQL] [CONNECTION 0] call procedure proc_ABC 2022-04-27 12:50:59.415 [DEBUG] [MSSQL] [CONNECTION 0] rows affected: 0 2022-04-27 12:50:59.415 [DEBUG] [MSSQL] [CONNECTION 0] processing time: 5 ms 2022-04-27 12:50:59.415 [INFO ] [MSSQL] [CONNECTION 0] interaction UPDATE has been executed in 11 milliseconds
<hr />
Der zweite Call bleibt bei der Verarbeitung hängen
<hr />
2022-04-27 12:50:59.447 [DEBUG] [MSSQL_Staging_Sales] establishing new connection: [CONNECTION 0] 2022-04-27 12:50:59.447 [INFO ] [MSSQL_Staging_Sales] [CONNECTION 0] establishing connection 2022-04-27 12:50:59.794 [INFO ] [MSSQL_Staging_Sales] [CONNECTION 0] execute UPDATE 2022-04-27 12:50:59.795 [DEBUG] [MSSQL_Staging_Sales] [CONNECTION 0] procedure call to be executed: {? = call proc_ABC(?, ?, ?, ?, ?, ?, ?, ?, ?)} 2022-04-27 12:50:59.795 [DEBUG] [MSSQL_Staging_Sales] [CONNECTION 0] prepare callable statement: {? = callproc_ABC(?, ?, ?, ?, ?, ?, ?, ?, ?)} 2022-04-27 12:50:59.795 [DEBUG] [MSSQL_Staging_Sales] [CONNECTION 0] set parameter values 2022-04-27 12:50:59.795 [TRACE] [MSSQL_Staging_Sales] [CONNECTION 0] register parameter RETURNVALUE for output 2022-04-27 12:50:59.795 [TRACE] [MSSQL_Staging_Sales] [CONNECTION 0] set parameter @parameter1: parameter1 2022-04-27 12:50:59.795 [TRACE] [MSSQL_Staging_Sales] [CONNECTION 0] set parameter @parameter3: parameter2 2022-04-27 12:50:59.795 [TRACE] [MSSQL_Staging_Sales] [CONNECTION 0] set parameter @parameter2: parameter3 ... 2022-04-27 12:50:59.795 [DEBUG] [MSSQL_Staging_Sales] [CONNECTION 0] call procedure callproc_ABC
<hr />
Wenn die Prozedur mit den identischen Parametern direkt über einen SQL Client aufgerufen wird funktioniert diese und wird ebenfalls in unter einer Sekunde abgearbeitet. Im Transconnect bleibt die Nachricht auch noch nach Stunden auf INPROGRESS und es wird nichts weiteres mehr geloggt.
Das viel größere Probleme bei der Fehlersuche ist allerdings, dass ich scheinbar keine Möglichkeit habe die Verarbeitung abzubrechen. Es wurde auch der Tipp, der in einem anderen Forumsbeitrag angesprochen wurde ausprobiert, die Queue anzuhalten bzw. zu Stoppen, allerdings führt der “Stopp” Vorgang nicht zu einem Ergebnis und läuft ebenfalls ins nichts. Ein Schließen aller offenen DB Verbindungen würde schon helfen, da während der Ausführung Tabellen auf der Datenbank gesperrt werden.
Das einzige, das zuverlässig geholfen hat war ein kompletter Neustart des Servers.
Gibt es hier noch andere Möglichkeiten? Auf dem Entwicklungssystem ist ein Neustarten noch hinnehmbar, auf dem Produktivsystem wäre so ein Vorgehen nicht so einfach möglich.
Vielleicht hat auch jemand noch eine Idee, wieso der Call überhaupt nicht ordentlich verarbeitet wird.
00
- Antworten
-
- 2. Mai 2022 um 10:08 Uhr
Hallo,die Logausschriften sehen aus, als ob zwei verschiedene Datenbankadapter für die beiden Prozeduraufrufe verwendet werden. Wenn das so ist, werden dafür auch zwei Datenbanktransaktionen gestartet, wenn kein Autocommit konfiguriert ist. Evtl. muss hier noch eine Transaktionssteuerung im Prozess ergänzt werden.
Im SQL-Servermanager könnte man die Datenbanksperren prüfen. Dort müssten die Verbindungen vom TRANSCONNECT zu sehen sein.Das Abbrechen von klemmenden Datenbankaktivitäten im TRANSCONNECT funktioniert nur, wenn der benutzte JDBC-Treiber Thread-Interrupts erkennt und entsprechend behandelt. Falls nicht, gibt es keine saubere Möglichkeit im TRANSCONNECT, die Verarbeitung abzubrechen. Im SQL-Servermanager könnte man in einem solchen Fall versuchen, die Verbindung zu killen.
Ihr TRANSCONNECT Support-Team
00
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.