Das klingt mir doch nach nicht behandelter Exception.

Für ein automatische Reconnect gibt es folgende Möglichkeiten (welche ich kenne).

1.) Connections über einen Connectionpool - der kümmert sich meistens um solche Sachen.

2.) Der JDBC-Treiber bietet eine Einstellung wie z.B. der MySQL-JDBC-Treiber. Dort kann man beim Verbinden gleich Reconnect angeben und der macht das von selber.

Beim Microsoft-JDBC-Treiber habe ich das allerdings nicht gesehen, hier kann man einen Failover-Listener anmelden...auch ehere mühsam.

3.) Eine entsprechende Exceptionabfrage inkl. eine Wiederhol ungs- und/oder Reconnect-Logik. Wichtig sind hier auch Fehlerzähler und Wartezeiten, damit das ganze nicht beim Warten 100% CPU braucht.
Anmerkung: Wenn der Service für Onlineprogramme ist, schaut die Strategie etwas anders aus: nur 1 Reconnect und bei Fehler eine Fehlermeldung als Anwort.

Meiner Meinung nach kommst du um 3. sowieso nicht herum. Auch wenn das Reconnect automatisch funktioniert, fliegt das Programm trotzdem noch, wenn genau eine Abfrage ist, wenn der SQL-Server mal nicht da ist.