Назад | Перейти на главную страницу

Триггер не работает на LInked Server. Оба сервера - SQL Server 2005

Я связал сервер с другим сервером. Я могу получить доступ к записям со связанного сервера, а также могу вставить запись с помощью оператора INSERT, например

INSERT INTO [LINKED-SERVER-IP].MyDb.dbo.Customer (CustomerId, CustomerName)
SELECT CustomerId, CustomerName FROM MyCustomers WHERE CustomerId = 5

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

Поставщик OLE DB «SQLNCLI» для связанного сервера «Linked-Server-IP» вернул сообщение «Диспетчер транзакций партнера отключил поддержку удаленных / сетевых транзакций.». Произошла ошибка. Msg 3616, уровень 16, состояние 1, строка 1 Транзакция обречена на триггер. Пакетирование было прервано.

Спасибо.

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

У вас достаточно прав для изменения настроек? Если нет, то вы можете рассмотреть другие варианты, такие как вставка в локальную таблицу и репликацию данных, или использовать Service Broker, чтобы заставить другой процесс выполнить удаленную вставку.