Вопрос

Можно ли создать триггер, которого не будет в транзакции?

Я хочу обновить данные на связанном сервере с помощью триггера, но из-за проблем с брандмауэром мы не можем создать распределенную транзакцию между двумя серверами.

Это было полезно?

Решение

Вероятно, вам нужна комбинация очереди, содержащей обновления для связанного сервера, и процесса, который считывает данные из очереди и обновляет удаленный сервер.Затем триггер вставит сообщение в очередь как часть обычной транзакции.Эти данные будут прочитаны отдельным процессом и использованы для обновления удаленного сервера.В процессе обработки ошибок (и, возможно, повторных попыток) потребуется логика.

Очередь может быть реализована с помощью одной или нескольких таблиц.

Другие советы

Я знаю, что это бесполезно, поэтому меня, вероятно, проголосуют за это, но на самом деле решение состоит в том, чтобы решить проблему с брандмауэром.

Я думаю, что если вы используете удаленные (несвязанные) серверы (которые в наши дни не являются предпочтительным вариантом), вы можете использовать SET REMOTE_PROC_TRANSACTIONS OFF, чтобы предотвратить использование DTC для удаленных транзакций, что может быть правильным здесь.Но это, вероятно, все равно не поможет вам со связанным сервером.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top