Исключение с использованием транзакций MSDTC на SQL 2008 / Server 2008 R2 x64 HRESULT: 0x8004D025

в настоящее время я обновляю приложение до 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 и интересно, что когда транзакция выдает это исключение, нет прерванной транзакции, но она записывает одну завершенную транзакцию. Что действительно интересно, так это то, что удаленный диспетчер транзакций также создает новую транзакцию (статус committed). Существует вторая запись как часть транзакции, которая успешно записывается в базу данных, но первая-нет.

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

  1. удалить из таблицы (это работает)
  2. Bulkcopy в новых строках (это не удается, и исключение возникает в методе "WriteToServer")
  3. создать запись записи происходящего (это работает).

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

1 ответов


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

с здесь:

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