.net sql-server ado.net transactions msdtc

.net - Múltiples conexiones con la misma cadena de conexión en una sola transacción, transacción elevada?



sql-server ado.net (1)

Al usar ado.net, y al crear múltiples conexiones a una base de datos de MS SQL Server dentro de una sola transacción (usando System.Transactions.TransactionScope), System.Transactions eleva la transacción del gerente de transacciones ligeras al coordinador de transacciones distribuidas (coordinador de transacciones de kernel) en Vista), incluso si las cadenas de conexión son las mismas para todos los objetos de conexión.

La documentación es algo ambigua sobre esta situación específica. Dice que la transacción se elevará si se abre otra conexión en el servidor durante la transacción, pero no dice si lo hace todo el tiempo o solo si la cadena de conexión es diferente. No tiene sentido para mí que eleve la transacción si la cadena de conexión es la misma, pero si lo hace, básicamente hace que el administrador de transacciones livianas sea completamente inútil, IMO.


En la versión actual, siempre eleva la transacción, desafortunadamente.

Lo que, como dices, hace que TransactionScope sea mucho menos útil de lo que sería. Creo que hay planes para cambiar esto en una versión futura.