Wie verarbeitet SQL server Network Failover in der Mitte einer insert-statement

Ich schreibe eine Anwendung, die SQL-Abfragen auf einer database in Echtzeit ausführt.

Wenn ich die Spiegelung des SQL servers einrichte und einen FailoverPartner in der Verbindungszeichenfolge setze und wenn die primäre database heruntergeht, wird der sekundäre Kick automatisch und deshalb muss ich keine Verbindung wieder öffnen oder irgendetwas löschen?

Auch wie verhält es Situationen, in denen eine INSERT-statement ausgeführt wird und die database heruntergeht? Ist das Sekretariat abholen oder ist es für immer verloren? Wäre es sicherer, Transaktions-basierte Insert-statementen zu machen?

Jede Form der Hochverfügbarkeit (Spiegelung, Clustering) hat eine Transaktionsgrenze: Jede Transaktion im Flug zum timepunkt des Failovers wird zurückgesetzt. Das ist keine Beschränkung, ist ein Merkmal . Es wäre unmöglich, korrekte Bewerbungen zu schreiben, wenn dies nicht wahr wäre.

Wenn ein Failover auftritt, wird jede Verbindung, die die database verwendet, abgeschnitten. Die Clients müssen neue Verbindungen mit dem neuen Principal wiederherstellen, den aktuellen Status aus der database erneut lesen und neue Operationen im aktuellen Zustand anlegen. Richtig geschriebene Bewerbungen (dh Transaktion ) haben hier keine Frage. Nur schlecht codierte Apps können data verlieren.