Trigger senza una transazione?
-
09-06-2019 - |
Domanda
È possibile creare un trigger che non sarà presente in una transazione?
Desidero aggiornare i dati su un server collegato con un trigger ma a causa di problemi con il firewall non possiamo creare una transazione distribuita tra i due server.
Soluzione
Ciò che probabilmente desideri è una combinazione di una coda che contenga aggiornamenti per il server collegato e un processo che legga i dati dalla coda e aggiorni il server remoto.Il trigger inserirà quindi un messaggio nella coda come parte della normale transazione.Questi dati verranno letti dal processo separato e utilizzati per aggiornare il server remoto.La logica sarà necessaria nel processo per gestire gli errori (ed eventualmente i nuovi tentativi).
La coda può essere implementata con una o più tabelle.
Altri suggerimenti
So che non è utile, quindi probabilmente riceverò un downvoting per questo, ma in realtà la soluzione è risolvere il problema del firewall.
Penso che se utilizzi server remoti (non collegati) (che non sono l'opzione preferita al giorno d'oggi), puoi utilizzare SET REMOTE_PROC_TRANSACTIONS OFF per impedire l'uso di DTC per transazioni remote, che potrebbe fare la cosa giusta qui.Ma questo probabilmente non ti aiuta comunque con un server collegato.