Server-Switching zur Laufzeit
-
Guten Morgen allerseits,
ich schreibe gerade eine Anwendung, die mit einer Datenbank arbeitet. Schmiert ein Datenbank-Server ab, soll automatisch eine Verbindung zu einem anderen (replizierten) Server hergestellt werden.
Soweit funktioniert alles wunderbar, die neue Verbindung wird hergestellt...
Es gibt bloß das Problem, dass wenn eine Datenbankaktion (Lesen, Schreiben) merkt, dass die Verbindung verloren gegangen ist, immer eine Exception geworfen wird (was imho ganz normal ist), die gefangen werden muss! Ich hab allerdings keine Lust bei ca. 500 Datenbankabfragen jetzt den hässlichen "try-catch"-Mechanismus zu benutzen!
Weiß von euch vielleicht jemand, wie ich diese Exception verhindern kann, dass einfach die Datenbankaktion wartet bis eine neue Verbindung da ist...!Grüße
P.S. Von der SqlConnection-Klasse kann man nicht erben :-(!
-
Morgen,
Mehr Details wären nicht schlecht. "Bei 500 Abfragen", da stelle ich mir vor,
dass Du 500 Abfragen hardcodiert in deinem Programm hast. Wie sieht der Code für die Abfrage(n) aus?Ansonsten: Was spricht gegen try/catch?
Dann kannst Du wenigstens die Transaktionen ordentlich behandeln,
wenn was schief geht. Verhindern kann man die Exception wohl kaum wirklich.MfG
Asmo
-
Asmodiel schrieb:
...dass Du 500 Abfragen hardcodiert in deinem Programm hast.
Traurig, aber wahr, ich habe die Anwendung übernommen!
Wie würdest du es sonst lösen, als die Abfrage-Strings hardzucodieren?
Asmodiel schrieb:
Ansonsten: Was spricht gegen try/catch?
Eigentlich nichts, außer dass es sehr viel Arbeit wird es alles zu ändern :-)!
Und außerdem, ich finde try/catch irgendwie unschön, denn dadurch werden beim Debuggen viele Exceptions, die geworfen werden, einfach "verdeckt"! Und das ist bei mir leider der Fall, weil Try/catch sehr oft sinnfrei verwendet wurde!Grüße
-
Hmmm.... Kannst Du mal einen Teil des Codes mit den Abfragen zeigen?
Da wird sich bestimmt etwas machen lassen.
Ich habe bisher immer einen OR-Mapper verwendet. Finde ich übersichtlicher. ^^MfG
Asmo
-
Also bei den Strings wirdst Du vermutlich keine Exceptions bekommen.
Schreib Dir eine Klasse als Wrapper.
Der übergibst DU nur deinen SQL-Query.
-
So eine Anforderung wird normalerweise über die Datenbank Server und nicht im Programm abgebildet. Suche dafür z.B. nach Cluster, Loadbalancing oder Redundanz.