What server property makes TransactionScope escalating to MSDTC?
Here are some of the things you can try to get it to work:


Compare Enlist=false in your connection strings
Compare MultipleActiveResultSets=true in your connection strings
User instance databases appear to work differently for some reason - we couldn't get it to work consistently with them - use full databases all of the time
You can reuse the same connection (close/reopen), or use more than one connection in a TransactionScope, but you cannot use more than one connection at the same time. You CAN however keep a ThreadStatic connection and pass that around (or, as we did, use ThreadLocal&lt;&gt; in a db wrapper class) - this solved a concurrency problem for us in ASP.NET which was causing unnecessary escalation
Don't bother if your db &lt; 2008 or if compatibility level &lt; 100
When using connection strings, don't use the ConnectionString property of another connection to create your new connection - it may not be the same as the original, which will cause escalation
Keep your connections open only for as long as you need to, close them at your earliest opportunity.


Stuff I found useful:


A ConnectionScope class gave me some ideas: http://blogs.msdn.com/b/dataaccess/archive/2006/02/14/532026.aspx
There's more to TransactionScope than the default ctor! http://blogs.msdn.com/b/dbrowne/archive/2010/06/03/using-new-transactionscope-considered-harmful.aspx
Note that there was nothing new I could find that would be different between 2008 and 2008 R2 - here is a list of stuff that was new in that release: http://msdn.microsoft.com/en-us/library/bb500435%28SQL.105%29.aspx