Ich kann es leider gerade nicht testen, daher nur unter Vorbehalt und ins Unreine gesprochen: Du könntest im OnBeforeExecute der Connection mit TestConnection die Gültigkeit der Verbindung prüfen. Im Falle einer
Exception löscht du einfach die SessionID.
Das das TestConnection aber intern auch ein Execute aufruft, musst du dies im OnBeforeExecute abfangen, z.B. in dem du den Event-Handler temporär auf nil setzt.