Общие Глюки при использовании TransactionScope и MS DTC

Я только начинаю работать с использованием TransactionScope, я нахожу, что всегда существуют неожиданные вещи, с которыми я сталкиваюсь, которые берут навсегда для отладки.

Я полагаю, что наличие объединенного списка их было бы большим для те "странная ошибка" обстоятельства, плюс развернуть наше знание нечетности в платформе.

Некоторый контекст о том, как я собираюсь быть областями транзакций использования:

  • веб-приложение
  • несколько веб-серверов, серверов приложений и SQL-серверов
  • транзакции будут главным образом транзакциями базы данных, но некоторые будут подняты для записи в MSMQ.
6
задан Gord 18 November 2009 в 21:21
поделиться

3 ответа

Если вы используете SQL Server и отметите @@ trancount, он будет равен 0, даже если у вас есть активный TransactionScope.

-2
ответ дан 17 December 2019 в 18:17
поделиться

Две вещи, которые не у меня в голове:

  • транзакции будут увеличиваться, когда вы используете больше, чем один объект соединения в той же области, даже если соединения имеют одинаковую строку соединения (это исправлено в sql 2008). http://support.microsoft.com/kb/899191 (allow inbound and outbound, do not require mutual authentication is usually the safest bet). Use DTCPing to troubleshoot connection issues between dtc instances as explained here: http://support.microsoft.com/kb/306843

You want transactions to be lightweight as much as possible, dtc introduces a lot of overhead. You also want transactions to be as short as possible, so introduce them only on the application servers and not on the web server. Make the hop over the network between the application servers and the database as small as possible and as fast as possible, send network traffic between web and app servers over a different connection than between app servers and db, and make the last one a screaming fast, ridiculously short connection.

If you have multiple application servers, you could consider having a single instance of msdtc running on a server (e.g. on the database or on one of the app servers) and use this remotely from all application servers instead of each one running their own, but I don't know what additional benefits this has.

3
ответ дан 17 December 2019 в 18:17
поделиться

Также обратите внимание, что если вы измените какой-либо из своих объектов во время транзакции, то они не будут откатываться обратно, если вы не добавите код для работы с этим.

Смотрите Состояние объекта TransactionScope и отката

1
ответ дан 17 December 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: