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

Откуда: СПб
Сообщений: 270
Всем добрый день!

на этом форуме вычитал что можно попробовать использовать процедуру sp_executesql для выполнения на прилинкованном сервере
Распределенная транзакция, MSDTC

Может кто подскажет поподробней как это сделать?

я должен запускать эту процедуру на прилинкованном сервере или на своем?

Сообщение было отредактировано: 14 ноя 13, 18:43
14 ноя 13, 17:28    [15130210]     Ответить | Цитировать Сообщить модератору
 Re: Обход распределенных транзакций  [new]
vso
Member

Откуда: СПб
Сообщений: 270
сделал так, создал синоним

CREATE SYNONYM [dbo].[executesql] FOR [10.1.64.173].[dbsBAES4-TASK].[dbo].[sp_executesql]


дальше в триггере написал так

DECLARE @KKS varchar(20);

  IF EXISTS (SELECT *
             FROM taskCONNECTION
                 INNER JOIN DELETED d
                           ON d.KKS = taskCONNECTION.MARK_JOU)
  select @KKS = KKS from DELETED;
  
  exec dbo.executesql N'DELETE
    FROM taskCONNECTION
    WHERE MARK_JOU = @KKS', @KKS


на что получил ответ "сервер 10.1.64.173 не настроен на RPC"????
14 ноя 13, 18:21    [15130548]     Ответить | Цитировать Сообщить модератору
 Re: Обход распределенных транзакций  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Веткин Сергей,

Какую задачу вы решаете, обходя DTC? Получение несогласованных наборов данных на разных серверах?
14 ноя 13, 18:26    [15130581]     Ответить | Цитировать Сообщить модератору
 Re: Обход распределенных транзакций  [new]
vso
Member

Откуда: СПб
Сообщений: 270
Гость333,

у майкрософта написано ято процедура возвращает 0 (успешное завершение) или ненулевое значение (неуспешное завершение)
14 ноя 13, 18:35    [15130621]     Ответить | Цитировать Сообщить модератору
 Re: Обход распределенных транзакций  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Веткин Сергей,

Вот смотрите. Пусть вы успешно удалили запись на связанном сервере, не используя DTC. После чего выполнение на локальном сервере падает по какой-нибудь ошибке, транзакция откатывается. В итоге запись на локальном сервере остаётся, а на связанном — удаляется. Это именно тот сценарий, который вы хотите реализовать?
14 ноя 13, 18:47    [15130684]     Ответить | Цитировать Сообщить модератору
 Re: Обход распределенных транзакций  [new]
vso
Member

Откуда: СПб
Сообщений: 270
Гость333,

Конечно нет, но не смотря на сложности по настройке сервера другого отдела на DTC. Хочется все же передавать инфу автоматизировано. Поэтому ищу возможность не вызывать распределенные транзакции. И у меня все действия на стороннем сервере проходят только после того как на моем все завершилось успехом.
14 ноя 13, 19:00    [15130786]     Ответить | Цитировать Сообщить модератору
 Re: Обход распределенных транзакций  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Веткин Сергей
И у меня все действия на стороннем сервере проходят только после того как на моем все завершилось успехом.

Транзакция завершается успешно только по завершению коммита. До того, как выполнен коммит, транзакция может упасть в любой момент по самым разнообразным причинам.

Вот не очень понятно, какую задачу вы пытаетесь решить, обращаясь к связанному серверу в триггере. Такая схема работы выглядит как минимум очень странно. Можете описать решаемую вами задачу?
14 ноя 13, 19:34    [15130957]     Ответить | Цитировать Сообщить модератору
 Re: Обход распределенных транзакций  [new]
vso
Member

Откуда: СПб
Сообщений: 270
Гость333,

Триггер я ликвидирую перейду в sp, просто здесь был самый простой запрос, вот и хотел попробовать.

а сделать я планирую так, в общем, во все хранимках:

  • Открываю транзакцию
  • Выполняю все действия у себя
  • Запускаю процедуру на связанном сервере
  • Если приходит 0, то commit если нет то rollback

    Ошибку поборол двумя запросами

    exec sp_serveroption '10.1.64.173', 'rpc out', 'true'
    


    exec sp_serveroption '10.1.64.173', 'remote proc transaction promotion', 'false'
    


    пока сделаю так, попрошу (не факт что они согласятся) смежный отдел написать сл. записку чтобы им на сервер установили DTC и как только удастся настроить DTC

    сделаю такой запрос

    exec sp_serveroption '10.1.64.173', 'remote proc transaction promotion', 'true'
    


    и не надо будет код переписывать....
  • 14 ноя 13, 19:44    [15131007]     Ответить | Цитировать Сообщить модератору
     Re: Обход распределенных транзакций  [new]
    vso
    Member

    Откуда: СПб
    Сообщений: 270
    Вчера ушел домой удовлетворенный, т.к. на простом запросе это сработало.

    Но сегодня приступил к более сложным запросам и понял что не так все просто.

    если данные для вставки/обновления формируются запросом из нескольких таблиц на моем сервере, чтобы сработала эта схеме необходимо чтобы на связанном сервере мой сервер был тоже залинкован и на все таблицы из которых идет выборка были созданы синонимы?

    Правильно я понимаю?
    15 ноя 13, 09:55    [15133595]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить