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

Я сейчас обновляю приложение для SQL 2008 / Server 2008 R2 x64, и я вижу какое-то странное поведение, которого я не видел в SQL 2005 / Server 2003. Случайно я получаю исключение от MSDTC: Диспетчер транзакций партнеров отключил поддержку удаленных / сетевых транзакций. (Исключение из HRESULT: 0x8004D025) . Обратите внимание, что я включил сетевые транзакции без аутентификации, и эти транзакции работают, скажем, в 95% случаев. Но затем некоторые не справляются с этим сообщением. Это объект SQLBulkCopy, если это уместно.

Я исследовал статистику DTC, и что интересно, когда транзакция выдает это исключение, прерванной транзакции нет, но она записывает одну завершенную транзакцию. Что ДЕЙСТВИТЕЛЬНО интересно, так это то, что удаленный менеджер транзакций ТАКЖЕ создает новую транзакцию (статус зафиксирован). Вторая запись является частью транзакции, которая успешно записывается в базу данных, а первая - нет.

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

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

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

6
задан Richard Everett 17 February 2016 в 15:21
поделиться