youssef.obeid Ответов: 1

Проблемы распределенных транзакций SQL


Дорогие, я создаю сервер связи с другим компьютером, чтобы создать синоним под названием "yso", чтобы выбрать из одной таблицы и вставить в другую таблицу на другом сервере также, когда я пытаюсь выполнить следующее :

INSERT  INTO yso ( data )
SELECT  data
FROM    dbo.my


выполнение происходит успешно, но когда я выполняю его с транзакцией (распределенная транзакция):

BEGIN TRANSACTION
INSERT  INTO yso
        ( data )
        SELECT  data
        FROM    dbo.my
COMMIT TRANSACTION



я получаю следующую ошибку:
MSDTC on server 'MyPC' is unavailable.


я пробовал много способов "я проверяю службы Distributed transaction Coordinator и Distributed Link Tracking Client в component services, и они работают нормально также я перезапускаю их, я перезапускаю сервер базы данных, я изменил настройки в разделе component Services/computers/Distributed Transaction Coordinator щелкните правой кнопкой мыши на локальном DTC перейдите на вкладку security и проверьте все настройки безопасности и проверьте, является ли имя учетной записи NT AUTHORITY\NetworkService"

все это не работает с моим делом, так как я могу решить эту проблему..

1 Ответов

Рейтинг:
4

youssef.obeid

Перейдите в раздел службы компонентов, в корне консоли разверните узел службы компонентов, а затем перейдите в раздел Компьютеры -> Мой компьютер -> координатор распределенных транзакций. Щелкните правой кнопкой мыши локальный координатор распределенных транзакций и выберите пункт Свойства:

Перейдите на вкладку Безопасность. Сначала установите флажок Включить доступ к сети DTC а затем установите все четыре доступных параметра разрешить:
• Разрешить Удаленным Клиентам
• Разрешить Удаленное Администрирование
• Разрешить Входящий Трафик
• Разрешить Исходящие Сообщения
Кроме того вам нужно будет выбрать пункт не требуется аутентификация и снять флажок Включить транзакцию XA

Затем при попытке выполнить транзакцию вы можете столкнуться со следующей ошибкой:

OLE DB provider "SQLNCLI10" for linked server "RND-YMAZEH" returned message "Cannot start more transactions on this session.".
Msg 7395, Level 16, State 2, Line 23
Unable to start a nested transaction for OLE DB provider "SQLNCLI10" for linked server "RND-YMAZEH".
 A nested transaction was required because the XACT_ABORT option was set to OFF.


Поэтому вам просто нужно раскомментировать первую строку (вы должны “добавить SET XACT_ABORT ON”), прежде чем начать выполнять свою транзакцию.


Lonyem

Юсеф, большой пост на эту распространенной проблемой неисправности.
Запись вашего решения очень проста и настолько прямолинейна, насколько это возможно.
Большое спасибо, это избавило меня от тонны головной боли.