Триггер без транзакции?

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

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

21.08.2008 12:36:42
2 ОТВЕТА
РЕШЕНИЕ

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

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

2
27.08.2008 17:24:42

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

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

2
21.08.2008 12:44:42