Надежный тест для продвижения MSDTC транзакций для распространения? - PullRequest
9 голосов
/ 16 марта 2010

Как я могу надежно проверить, что MSDTC преобразовал транзакцию в распределенную транзакцию?

Это при использовании TransactionScope в .net.

В настоящее время сотрудник проверяет это, выключая координатор на своем компьютере - если выдается исключение, это принимается как свидетельство того, что была предпринята попытка продвинуть транзакцию. Это действительный тест?

1 Ответ

12 голосов
/ 19 марта 2010

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

Некоторые другие вещи, которые вы могли бы сделать:

  • Вы также можете запустить SQL Profiler и в разделе Отслеживание транзакций DTCTransaction.

  • С точки зрения кода, вы можете обработать событие DistributedTransactionStarted и зарегистрировать сообщение при запуске распределенной транзакции.

  • Или вы можете просто добавить сообщения журнала для регистрации System.Transactions.Transaction.Current. TransactionInformation.DistributedIdentifier до окончания транзакции. Если значение равно Guid.Empty {00000000-0000-0000-0000-000000000000}, то это не распределенная транзакция, в противном случае транзакция преобразуется в распределенную транзакцию.

Вы сказали, что используете SQL Server 2008. Какую версию .NET вы используете? Это 3,5? Если вы используете SQL Server 2008 и .NET 3.5 , то вы должны иметь возможность открывать несколько подключений (используя одну строку подключения) к одной и той же базе данных в одной транзакции, не переходя в распределенную транзакцию. Чтобы это работало, вам нужно закрыть первое соединение, прежде чем открывать второе.

Если окажется, что все условия выполнены, а транзакции все еще увеличиваются, я бы:

  • дважды проверьте уровень совместимости с SQL Server
  • проверить строку подключения, чтобы увидеть, отключено ли объединение в пул
  • проверьте, что два соединения не открываются одновременно в одной транзакции
  • выяснить, продвигаются ли все транзакции или только в определенных сценариях

ОБНОВЛЕНИЕ: Координатор распределенных транзакций (MSDTC) и FAQ по транзакциям объединяет большой список ресурсов MSDTC.

...