Das Problem von .net beim Stoppen von Threads ist, dass der Thread selber auf die Exception reagieren muss und diese sogar ggf. ablehnen kann.
"Hängt" der Thread aber auf der DTAQ, kann auch fast gar nicht auf die Exception reagiert werden (daher die lange Zeit).
Ein richtige "Killen" eines Threads gibts in .net überhaupt nicht mehr !
Wenn du da die Windows-API verwendest, kommt .net mit seiner Speicherverwaltung (Garbage) durcheinander und hinterläßt ggf. große Speicherlücken.

Andererseits kann eigentlich die DTAQ nicht gesichert werden, wenn noch ein Read darauf hängt (Sichern im aktiven Zustand geht für DTAQ's meines Wissens nach nicht).

Werden denn die Hostservices beim Backup runtergefahren ?

Dann könnte man ggf. mittels SQL-Connection die Verbindung überwachen und auf ein Error/Close-Ereignis reagieren.