Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сервер отказывается принимать данные из триггера.  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
Добрый день.

Не подскажете, как с этим можно справиться?
Написан триггер, который при каждом обновлении таблицы сохраняет существенные данные (лог) в отдельной таблице на другом экземпляре SQL сервера.
Сервер добавлен в группу Линкед серверов. Запрос на изменение добавление записи напрямую из данного соединения проходит нормально, ошибка происходит только при записи в эту таблицу из триггера.
OLE DB provider "SQLNCLI11" for linked server "ServerName" returned message "Партнерский диспетчер транзакций отключил поддержку удаленных и сетевых транзакций.".
Msg 7391, Level 16, State 2, Procedure TriggerName, Line 12
The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "ServerName" was unable to begin a distributed transaction.

сервер на котором выполняется триггер - Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)

сервер где находится таблица - Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
2 апр 14, 10:29    [15819813]     Ответить | Цитировать Сообщить модератору
 Re: Сервер отказывается принимать данные из триггера.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Владимир Меньшиков
Запрос на изменение добавление записи напрямую из данного соединения проходит нормально, ошибка происходит только при записи в эту таблицу из триггера.

Потому что триггер выполняется в транзакции
А у вас "Партнерский диспетчер транзакций отключил поддержку удаленных и сетевых транзакций."
2 апр 14, 10:40    [15819872]     Ответить | Цитировать Сообщить модератору
 Re: Сервер отказывается принимать данные из триггера.  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
Glory
Потому что триггер выполняется в транзакции
А у вас "Партнерский диспетчер транзакций отключил поддержку удаленных и сетевых транзакций."

А как его настоятельно попросить не отключать поддержку удаленных и сетевых транзакций?
Я понимаю, что в настройках принимающего сервера, понять бы в каких.
2 апр 14, 10:48    [15819908]     Ответить | Цитировать Сообщить модератору
 Re: Сервер отказывается принимать данные из триггера.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Владимир Меньшиков
А как его настоятельно попросить не отключать поддержку удаленных и сетевых транзакций?

а вы _включили_ поддержку ?
2 апр 14, 10:56    [15819946]     Ответить | Цитировать Сообщить модератору
 Re: Сервер отказывается принимать данные из триггера.  [new]
invm
Member

Откуда: Москва
Сообщений: 9402
Владимир Меньшиков
Я понимаю, что в настройках принимающего сервера, понять бы в каких.
Неправильно понимаете.
Только нужно не настройки искать, а вообще прекращать в триггерах пользование линкед-серверами. Читайте про Service Broker.
2 апр 14, 11:03    [15819982]     Ответить | Цитировать Сообщить модератору
 Re: Сервер отказывается принимать данные из триггера.  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
Glory
а вы _включили_ поддержку ?

Glory, а как ее включить, то что я нашел в хелпе
exec sp_configure 'remote proc trans', 1 
reconfigure 

результата не дало.
2 апр 14, 14:42    [15821680]     Ответить | Цитировать Сообщить модератору
 Re: Сервер отказывается принимать данные из триггера.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Никогда так не делайте, вы рискуете получить неконтролируемое поведение при отказе линка. Прислушайтесь к совету invm.
2 апр 14, 15:03    [15821839]     Ответить | Цитировать Сообщить модератору
 Re: Сервер отказывается принимать данные из триггера.  [new]
Владимир Меньшиков
Member

Откуда: Санкт-Петербург
Сообщений: 68
invm
Читайте про Service Broker.

Для Service Broker нужна версия Enterprise? Или я что-то не так понял?
2 апр 14, 15:56    [15822270]     Ответить | Цитировать Сообщить модератору
 Re: Сервер отказывается принимать данные из триггера.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Брокер-то не обязательно использовать, складируйте данные во временный буфер, который переносите по расписанию.
2 апр 14, 16:03    [15822331]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить