2009-02-03 2 views
12

Есть ли способ точно определить, почему процесс TrasactionScope System.Transaction перерастает в DTC? Мы сталкиваемся с одним из наших компонентов, которые, похоже, эскалируют транзакцию, в то время как все остальные компоненты (которые кажутся обманчиво похожими) не делают эскалации.Проследите, почему транзакция перерастает в код DTC

Предоставляются ли какие-либо сведения о причинах эскалации и как их можно найти и наблюдать? SQL Profiler? Лог-файлы? Или мне не повезло на этом?

UPDATE: Я бегу от SQL Server 2005 для получения информации

+0

Предполагая, что база данных SQL 2005 или SQL 2008? – Kev

ответ

7

Вы можете попытаться отключить услугу Corduted Transaction Cordinator и отключить ее тип запуска. Это вызовет исключение, когда будет продвигаться транзакция, которая будет иметь код проблемы в стеке вызовов.

Конечно, это не поможет, если на машине требуются другие элементы, которым требуется эта услуга, но это будет возможно на машине отладки.

+0

Отмечая это принятый ответ, потому что он действительно помог мне отследить проблему (что было вызвано при открытии второго соединения, так же, как Антон упоминает в http://stackoverflow.com/questions/506733/trace-why-a-transaction-is-escalated-to-dtc/506753#506753) –

9

При использовании TransactionScope транзакция перерос всякий раз, когда приложение открывает второе соединение (даже в одной и той же базы данных) в рамках сделки в вопросе.

+0

Дополнительная информация: http://stackoverflow.com/questions/1690892/transactionscope-automatically-escalating-to-msdtc-on-some-machines –