Frage

Ist es möglich, einen Auslöser zu erstellen, der nicht in einer Transaktion enthalten ist?

Ich möchte Daten auf einem Verbindungsserver mit einem Trigger aktualisieren, aber aufgrund von Firewall-Problemen können wir keine verteilte Transaktion zwischen den beiden Servern erstellen.

War es hilfreich?

Lösung

Was Sie wahrscheinlich wollen, ist eine Kombination aus einer Warteschlange, die Updates für den Verbindungsserver enthält, und einem Prozess, der Daten aus der Warteschlange liest und den Remote-Server aktualisiert.Der Trigger fügt dann im Rahmen der normalen Transaktion eine Nachricht in die Warteschlange ein.Diese Daten werden vom separaten Prozess gelesen und zur Aktualisierung des Remote-Servers verwendet.Für die Verarbeitung von Fehlern (und möglicherweise Wiederholungsversuchen) ist Logik erforderlich.

Die Warteschlange kann mit einer oder mehreren Tabellen implementiert werden.

Andere Tipps

Ich weiß, dass es nicht hilfreich ist, daher werde ich wahrscheinlich dafür abgelehnt, aber die Lösung besteht tatsächlich darin, das Firewall-Problem zu beheben.

Ich denke, wenn Sie Remote-Server (nicht verbundene Server) verwenden (was heutzutage nicht die bevorzugte Option ist), können Sie SET REMOTE_PROC_TRANSACTIONS OFF verwenden, um die Verwendung von DTC für Remote-Transaktionen zu verhindern, was hier möglicherweise das Richtige tun könnte.Aber das hilft Ihnen wahrscheinlich sowieso nicht bei einem Verbindungsserver.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top