Исключение при использовании транзакций MSDTC в SQL 2008 / Server 2008 R2 x64 HRESULT: 0x8004D025 - PullRequest
6 голосов
/ 04 апреля 2011

В настоящее время я обновляю приложение до SQL 2008 / Server 2008 R2 x64 и вижу странное поведение, которого я не видел в SQL 2005 / Server 2003. Случайно я получаю исключение из MSDTC: The partner transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D025).Обратите внимание, что я включил сетевые транзакции без аутентификации, и эти транзакции работают, скажем, 95% времени.Но тогда некоторые терпят неудачу с этим сообщением.Это релевантный объект SQLBulkCopy.

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

С точки зрения последовательности, когда я вижу эту ошибку, произошло следующее:

  1. Удалить из таблицы (это работает)
  2. Массовая копирование в новых строках (происходит сбой, и возникает исключение для метода «WriteToServer»)
  3. Создать запись о происходящей записиэто работает).

Я знаю, что SQL и приложение настроили свои MSDTC для удаленных транзакций, так как некоторые из транзакций работают успешно.Есть идеи, почему это происходит и как я могу это исправить?

1 Ответ

8 голосов
/ 04 апреля 2011

Лично я не видел этого на практике, но нашел это:

С здесь :

Убедитесь, что вы отметили «Доступ по DTC по сети», «Разрешить удаленный клиент», «Разрешить входящий / исходящий», «Включить TIP» (некоторые опции могут не понадобиться, попробуйте получить конфигурацию) Служба будет перезапущена НО ВАМ МОЖЕТ НУЖНО ПЕРЕЗАГРУЗИТЬ СЕРВЕР, ЕСЛИ ЭТО ЕЩЕ НЕ РАБОТАЕТ
...