Проследите, почему транзакция перешла в DTC
Есть ли какой-либо способ точно определить, почему процесс TrasactionScope System.Transaction перерастает в DTC? Мы сталкиваемся с одним из наших компонентов, которые, похоже, эскалируют транзакцию, в то время как все остальные компоненты (которые кажутся обманчиво похожими) не делают эскалации.
Предоставляются ли какие-либо сведения о причинах эскалации и как их можно найти и наблюдать? SQL Profiler? Лог файлы? Или мне не повезло на этом?
UPDATE: я запускаю сервер SQL Server 2005 для информации
Ответы
Ответ 1
Вы можете попытаться отключить службу Distributed Transaction Cordinator и отключить ее тип запуска. Это приведет к возникновению исключения при продвижении транзакции, который будет иметь код проблемы в стеке вызовов.
Конечно, это не поможет, если у вас есть другие элементы, работающие на машине, которые требуют эту услугу, но будут возможны на машине отладки.
Ответ 2
При использовании TransactionScope
транзакция эскалируется всякий раз, когда приложение открывает второе соединение (даже в той же базе данных) в пределах области транзакции, о которой идет речь.