2009-02-03 6 views
12

Existe-t-il un moyen de déterminer précisément pourquoi un TrasactionScope System.Transaction est transmis au DTC? Nous heurtons une bosse avec l'un de nos composants qui semblent escalader la transaction alors que tous les autres composants (qui semblent faussement similaires) ne font pas l'escalade.Tracez pourquoi une transaction est transmise au DTC

Des informations sont-elles disponibles sur les raisons de l'escalade et comment peuvent-elles être trouvées et observées? SQL Profiler? Fichiers journaux Ou ai-je de la chance sur celui-ci?

MISE À JOUR: Je suis en cours d'exécution sur SQL Server 2005 pour plus d'informations

+0

En supposant que la base de données est SQL 2005 ou SQL 2008? – Kev

Répondre

7

Vous pouvez essayer de désactiver le service Distributed Transaction Cordinator et de définir son type de démarrage sur désactivé. Cela provoquera une exception lors de la promotion de la transaction qui aura le code de problème dans la pile d'appels.

Bien sûr, cela n'aidera pas si d'autres éléments sont en cours d'exécution sur la machine nécessitant ce service, mais ce serait possible sur une machine de débogage.

+0

Marquer cette réponse comme étant acceptée parce qu'elle m'a aidé à trouver la cause (qui a été causée par une deuxième connexion en cours d'ouverture, tout comme Anton mentionne dans http://stackoverflow.com/questions/506733/trace-why-a-transaction-is-escalated-to-dtc/506753#506753) –

9

Lorsque vous utilisez TransactionScope une transaction est escaladée à chaque fois que l'application ouvre une deuxième connexion (même à la même base de données) dans le cadre de la transaction en question.

+0

Plus d'infos: http://stackoverflow.com/questions/1690892/transactionscope-automatically-escalating-to-msdtc-on-some-machines –

Questions connexes