Нет MSDTC - все еще не получается "связь с соответствующим менеджером транзакций" - PullRequest
1 голос
/ 06 августа 2010

В моем проекте я использую объект Ado.Net DbTransaction для управления транзакциями ... Тогда почему я получаю ошибку, связанную с MSDTC - "сбой связи с соответствующим менеджером транзакций".

Вот мой код.

DbTransaction trans = Connection.BeginTransaction();

//Code

if (successfull)
{
    trans.Commit();
}
else
{
    trans.RollBack();
}

1 Ответ

1 голос
/ 06 августа 2010

К сожалению, MSDTC действительно может быть медвежьим в настройке. Однако, как только вы это сделаете, это будет прекрасно работать. Проблемы возникают только потому, что настройки сети у всех немного отличаются.

Похоже, что ваша служба MSDTC может быть не включена на вашем клиентском компьютере или, возможно, на вашем сервере.

Вот руководство по его включению в Windows 7: -> http://www.thereforesystems.com/turn-on-msdtc-windows-7/

Вам также необходимо включить его на сервере БД: -> http://support.microsoft.com/kb/817064

Простой способ проверить, работает ли он без обращения к администраторам вашего сервера, - настроить две разные локальные базы данных на вашем устройстве разработчика. Затем попробуйте выполнить транзакцию через оба соединения с базой данных. Если вы правильно настроили msdtc, все должно работать нормально.

И еще один момент: вы можете немного упростить свою жизнь, обратившись к библиотеке System.Transactions и используя свой код транзакции, например:

using (TransactionScope scope = new TransactionScope())
{
    /* Perform transactional work here */
    SomeMethod();
    scope.Complete();
}

Обратите внимание, что явного отката не требуется. Если в операторе using произойдет сбой, или вы выйдете из оператора using до нажатия кнопки .Complete ();, ваша транзакция будет отменена. Для получения дополнительной информации о TransactionScope см. Здесь: -> http://msdn.microsoft.com/en-us/library/ms172152(VS.90).aspx

...