Creo que su prueba está bien, aunque debe asegurarse de obtener una excepción de DTC y no otra excepción.
Algunas otras cosas que podría hacer:
También puede ejecutar SQL y bajo Transacciones DTCTransaction rastro.
En términos de código, puede manejar el evento DistributedTransactionStarted y registrar un mensaje cuando se inicia una transacción distribuida.
O simplemente podría agregar mensajes de registro para registrar el System.Transactions.Transaction.Current. TransactionInformation.DistributedIdentifier
antes del final de la transacción. Si el valor es Guid.Empty {00000000-0000-0000-0000-000000000000}, entonces no se trata de una transacción distribuida, de lo contrario, la transacción se ha promocionado a una transacción distribuida.
Dijiste que estabas utilizando SQL Server 2008. ¿Qué versión de .NET está usando? ¿Es 3.5? Si está usando SQL Server 2008 and .NET 3.5, entonces debería poder abrir conexiones múltiples (usando la misma cadena de conexión) a la misma base de datos en la misma transacción sin escalar a una transacción distribuida. Para que esto funcione, debe cerrar la primera conexión antes de abrir una segunda conexión.
Si parece que se cumplen todas las condiciones y las transacciones siguen en aumento, lo haría:
- vuelva a comprobar el nivel de compatibilidad de SQL Server
- verificación de la cadena de conexión para ver si la agrupación se desactiva
- cheque para ver que dos conexiones no se abren al mismo tiempo en una sola transacción
- averiguar si todas las transacciones están siendo promovidas o sólo en ciertos escenarios
ACTUALIZACIÓN: El Distributed Transaction Coordinator(MSDTC) and Transaction FAQ reúne una gran lista de recursos de MSDTC.
MSDTC es un producto bastante sólido. ¿Estás seguro de que necesitas probar esto? – Steven
@Steven - Necesito comprobar si las transacciones se están promoviendo o no. La situación es que se supone que las transacciones no deben promoverse, pero mi compañero de trabajo cree que están siendo promovidas. ¿Como podemos estar seguros? ¿Cómo verificamos que una transacción fue o no promocionada? – Oded
@Oded: si no se deben promocionar las transacciones, ¿por qué está utilizando 'TransactionScope'? – Steven