Task ist hängengeblieben und lässt sich nicht beenden

Erstellt von Markus Pomper, Geändert am Do, 28 Sep, 2023 um 2:17 NACHMITTAGS von Michael Wörther

Dieser Leitfaden befasst sich mit dem Thema  "hängengebliebene Task" und wie diese bereinigt werden können.


Bild 1:Ein hängengebliebener Task


Tasks können aus unterschiedlichen Gründen hängenbleiben und lassen sich normalerweise über dem Client beenden.

Lässt sich der Task nicht über den Client beenden, hilft folgende Schritt für Schritt Anleitung:



Achtung: Durch Fehler beim SQL Update Befehl kann Ihr PDM-Tresor irreparabel beschädigt werden! 

  • Wenn Sie sich hier nicht sicher sind, dann kontaktieren Sie bitte unbedingt unseren Support! 
  • Erstellen Sie unbedingt ein vollständiges Backup der PDM-Tresor-Datenbank 
    VOR der Änderung!



Step 1: Vorbereitung

  • Über Remote mit PDM Server verbinden 
  • Auf dem Server das SQL Server Management Studio öffnen
    (Alternativ direkt auf dem Client, wenn das SQL Server Management Studio dort installiert ist)



Step 2: Zugriff auf die SQL-Datenbank und Backup

  • Mit einen User anmelden, welcher die Rechte zum Zugriff auf die PDM Tresor-Datenbank hat.
    (standardmäßig der User "sa" mit dem dazugehörigen Passwort)


  • Zur Sicherheit als erstes ein vollständiges Backup der PDM Tresor-Datenbank erstellen:




Step 3: Ausführung der SQL-Abfrage


In der PDM Datenbank gibt es einige Tabellen.
Die Taskliste und alle Tasks ( sowohl die offenen als auch die schon ausgeführten) stehen alle in der SQL-Tabelle „TaskInstances“.


Die Tasks können folgende Werte beim „TaskStatus“ haben:


-- 1 [Waiting for host],

-- 2 [Starting up],

-- 3 [In process],

-- 4 [Retrying],

-- 5 [Suspended],

-- 6 [Cancelling],

-- 7 [OK],

-- 8 [Cancelled],

-- 9 [Failed],

-- 10 [Suspending],

-- 11 [Resuming]


Als Erstes wird jetzt eine SQL SELECT Abfrage ausgeführt, um zu kontrollieren, ob wir damit die gleiche Anzahl  hängengebliebener Tasks gelistet bekommen , wie in der PDM Administration beim Client ersichtlich:


Select * from Taskinstances

Where TaskStatus in (6, 10, 11)


 

Wenn das übereinstimmt, dann wird als Nächstes  mit einem SQL-Update der Taskstatus dieser Tasks  auf "9" geändert, wodurch diese Tasks dann als "Fehlgeschlagen" unter den "erledigten Task" aufgelistet werden:

 

UPDATE TaskInstances

SET TaskStatus = 9

WHERE TaskStatus in (6, 10, 11)


(Ergänzung:

Man kann man den Update Befehl noch zusätzlich "absichern" indem man auch die TaskInstanceID mit  in die Query-Bedingungen aufnimmt. Damit ist sichergestellt, dass definitiv nur diese eine Task geändert wird:
sicher ist sicher...)


 

Nach dem Ausführen

sollte damit der Task beim Client unter "erledigte Task" zu finden sein: