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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top