Trigger ohne Transaktion?


2

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

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

2

Was Sie wahrscheinlich wollen, ist eine Kombination aus einer Warteschlange, das Updates für den Verbindungsserver und ein Verfahren enthält, die Daten aus der Warteschlange liest und aktualisiert den Remote-Server. Der Auslöser fügt dann eine Nachricht als Teil der normalen Transaktion in die Warteschlange ein. Diese Daten werden von dem separaten Prozess gelesen und zum Aktualisieren des Remote-Servers verwendet. Logik wird in diesem Prozess benötigt, um Fehler (und möglicherweise Wiederholungen) zu behandeln.

kann die Warteschlange mit einer oder mehreren Tabellen implementiert werden.


2

Ich weiß es nicht hilfreich ist, also wird mich wahrscheinlich dafür bekommen Downvoted, aber wirklich, ist die Lösung, um das Firewall-Problem zu beheben.

Ich denke, wenn Sie remote (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, die hier das Richtige tun könnten. Aber das hilft Ihnen wahrscheinlich sowieso nicht mit einem Verbindungsserver.