James Frankman, the following will update the Tools Database tables directly. I have found this to work for me (when a task indicated it was still running but it really wasn't) and am not sure if it will work for you. Use at your own risk (back up the ToolsDB to be safe).
Code:
SELECT OBJECT_ID, NEXTSTARTDATETIME00
, STARTTIME00, STATUS00
, RTRIM(NEEDRESCHEDULE00) AS NEEDRESCHEDULE00
FROM SYSTOOLS.MDTASKEXECTY00
Look in the STATUS00 an NEEDRESCHEDULE00 columns. Find the row that is not like the rest (probably STATUS00 is not equal to 1). In my situation they contained 3 and 0, respectively. Using the OBJECT_ID for that row, Update the table and set STATUS00 = 1 and NEEDRESCHEDUL00 = 1
Code:
SELECT OBJECT_ID, RTRIM(STATE00) AS STATEOO NUMBEROFEXECUTIONS00
FROM SYSTOOLS.MDTASKTYPE00
Look at the STATEOO and NUMBEROFEXECUTIONS00 columns. Find the row that is not like the rest (probably STATEOO not equal to 1) Mine were 2 and 1. Using the OBJECT_ID for that row, Update the table and set STATEOO = 1 and NUMBEROFEXECTUIONS00 = 0 (this may need to be 1 less the what is in the table instead of 0).
Code:
SELECT OBJECT_ID, END00, DURATION00, RUNNINGSTATUS00
FROM SYSTOOLS.MDTHISTORYTY00
Look at END00, DURATION00 and RUNNINGSTATUS00. Find the row that is not like the rest (probably END00 NULL and/or RUNNINGSTATUS00 not equal to 1) Mind had valuse of NULL, 0, and 3. Using the OBJECT_ID, update the row and set END00 to some past date (after the task started. An Hour in the past will work), Duration00 to some number (this is the execution time. Any number will work), and RUNNINGSTATUS00 = 1.
This worked to set the TOOLS Database and a V8.2 system to values that indicate the task is finished and not executing.