MSDTC, COM+ or EnterpriseServices are allowing you to specify an isolation level for transactions so that you can increase concurrency to improve performance and scalability.

But, the value you set for the isolation level is used by MSDTC only to pass it to the resource manager(s), more like a hint rather than a restriction. It is the responsibility of the resource manager to use this isolation level accordingly.

 

The MSDTC transaction will always carry the same isolation level which is the one that was initially specified when the transaction was created. It cannot be changed later. Some resource managers allow you to change the isolation level. For instance, the isolation level that SQL Server is using on a connection can be changed using "SET TRANSACTION ISOLATION LEVEL". Changing the isolation level at statement level inside SQL Server or any other resource manager is invisible to MSDTC. This is why mixing MSDTC transaction isolation levels with resource manager statement level isolation levels is not recommended.