TransactionScope escalation

Hi

We were excited by the potential of TransactionScope to simplify our data access code, eliminating the need to pass around a database transaction.

After playing around with .NET 2.0 for a while we were very disappointed to find that unless you used the exact same connection object and kept it open for the duration of the transaction it would result in escalation to the DTC, even though all connections were to the same resource and using the same connection string.

This leaves passing a connection around or creating a DbConnectionScope (mentioned in one of the forum post below) as the only option to avoid escalation. This is a little less than an ideal situation.

This problem has been discussed pretty extensively in the two threads below.

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=113669&SiteID=1

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=531830&SiteID=1

Jian Zeng from Microsoft test mentions in the first thread that it is a known issue and will be fixed in a later release.

My question is; is this fix / modification going to be in the Orcas .NET release or will it be after that?

This problem is a major road block to using TransactionScope in a real project. I would love to hear other peoples thoughts. Is this an issue for you too?

Thanks Joel

Vote on this issue here.

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=171884

[2826 byte] By [JoelMcCormick] at [2008-3-7]
# 1

This is actually a restriction within the implementation of SQLServer, rather than anything inherent in System.Transactions.

I'll find out when they are scheduled to address this and post back here.

Jack Loomis

PM for XES Transactions

JackLoomis-MSFT at 2007-8-30 > top of Msdn Tech,Software Development for Windows Vista,Transactions Programming...
# 2

As Jack said above, this is not something that we can fix on the client-side only; we need to change both the client and the server (and the client-server protocol actually) to make this work.

We've had some discussions about this and have a design for the solution, but it's not yet clear whether/when we'll fix this. If we do fix it, it would enable the usual pattern where each component does open/close over a connection, and effectively there is never more than one connection opened at the same time.

Pablo Castro
ADO.NET Technical Lead
Microsoft Corporation

pablo-ms at 2007-8-30 > top of Msdn Tech,Software Development for Windows Vista,Transactions Programming...
# 3
Thanks for your comments.

That explains the problem a bit more. It obviously isn't the simple solution that I thought.

It would be great if you guys could have a fix in Orcas! :-)

Thanks
Joel

JoelMcCormick at 2007-8-30 > top of Msdn Tech,Software Development for Windows Vista,Transactions Programming...
# 4
Hi

Is it possible yet, for someone to give us an update on whether this issue will be addressed in the Orcas .NET release?

Thanks
Joel

JoelMcCormick at 2007-8-30 > top of Msdn Tech,Software Development for Windows Vista,Transactions Programming...
# 5

While I'm not the authority to speak for System.Data, the latest I know is that this issue will not be addressed in Orcas release.

You might find the DBConnectionScope class useful to workaround this limitation:

http://blogs.msdn.com/dataaccess/archive/2006/03/29/564299.aspx

http://blogs.msdn.com/dataaccess/archive/2006/02/14/532026.aspx

FlorinLazar-MSFT at 2007-8-30 > top of Msdn Tech,Software Development for Windows Vista,Transactions Programming...

Software Development for Windows Vista

Site Classified