Acionar sem transação?
-
09-06-2019 - |
Pergunta
É possível criar uma trigger que não estará em uma transação?
Quero atualizar os dados em um servidor vinculado com um gatilho, mas devido a problemas de firewall não podemos criar uma transação distribuída entre os dois servidores.
Solução
O que você provavelmente deseja é uma combinação de uma fila que contenha atualizações para o servidor vinculado e um processo que leia os dados da fila e atualize o servidor remoto.O gatilho então inserirá uma mensagem na fila como parte da transação normal.Esses dados serão lidos pelo processo separado e usados para atualizar o servidor remoto.A lógica será necessária no processo para lidar com erros (e possivelmente novas tentativas).
A fila pode ser implementada com uma ou mais tabelas.
Outras dicas
Eu sei que não é útil, então provavelmente receberei votos negativos por isso, mas, na verdade, a solução é corrigir o problema do firewall.
Acho que se você usar servidores remotos (não vinculados) (que não são a opção preferida atualmente), poderá usar SET REMOTE_PROC_TRANSACTIONS OFF para evitar o uso de DTC para transações remotas, o que pode fazer a coisa certa aqui.Mas isso provavelmente não ajuda você com um servidor vinculado.