2009-02-03 17 views
12

¿Hay alguna forma de determinar con precisión por qué un TrasactionScope System.Transaction se está escalando al DTC? Estamos llegando a un bache con uno de nuestros componentes que parece escalar la transacción, mientras que el resto de los componentes (que parecen engañosamente similares) no hace escalada.Rastrea por qué una transacción se escala a DTC

¿Hay alguna información disponible sobre los motivos de la escalada y cómo se pueden encontrar y observar? Analizador de SQL? ¿Archivos de registro? ¿O no tengo suerte en este caso?

ACTUALIZACIÓN: Estoy corriendo en SQL Server 2005 para obtener información

+0

Suponiendo que la base de datos es SQL 2005 o SQL 2008? – Kev

Respuesta

7

Puede intentar cerrar el servicio Distributed Transaction Cordinator y configurar su tipo de inicio en disabled. Esto causará una excepción cuando se promueva la transacción que tendrá el código del problema en la pila de llamadas.

Por supuesto, esto no ayudará si tiene otros elementos en ejecución en la máquina que requieren este servicio, pero sería posible en una máquina de depuración.

+0

Marcando esto la respuesta aceptada porque realmente me ayudó a localizar el problema (que fue causado por una segunda conexión que se abre, tal como Anton menciona en http://stackoverflow.com/questions/506733/trace-why-a-transaction-is-escalated-to-dtc/506753#506753) –

9

Al utilizar TransactionScope una transacción se escala cada vez que abre la aplicación de una segunda conexión (incluso a la misma base de datos) dentro del ámbito de transacción de que se trate.

+0

Más información: http://stackoverflow.com/questions/1690892/transactionscope-automatically-escalating-to-msdtc-on-some-machines –

Cuestiones relacionadas